5
环境:2.0的ObjectDataSource删除问题
我在与自定义对象上的Delete
方法和ObjectDataSource
问题asp.net框架。 Select
,Insert
和Update
方法工作正常。
这里是类的代码:
public class Car
{
public string ID {get; set;}//I know this is 3.0+ syntax.
public string Description {get; set;}//I know this is 3.0+ syntax.
public bool Equals(Car other)
{
if (ReferenceEquals(null, other)) return false;
if (ReferenceEquals(this, other)) return true;
return other.ID == ID;
}
public override bool Equals(object obj)
{
if (ReferenceEquals(null, obj)) return false;
if (ReferenceEquals(this, obj)) return true;
return obj.GetType() == typeof (Car) && Equals((Car) obj);
}
public override int GetHashCode()
{
return ID;
}
}
public class CarList
{
private static List<Car> _cars;
public CarList()
{
if(_cars == null)
_cars = new List<Car>();
//Create some cars and insert them here...
}
public List<Car> Select()
{
return _cars;
}
public void Update(Car updatedCar)
{
int i = _cars.IndexOf(updatedCar);
if(i != -1)
{
_cars[i] = updatedCar;
}
}
public void Insert(Car insertedCar)
{
_cars.Add(insertedCar);
}
public void Delete(Car deletedCar)
{
_cars.Remove(deletedCar);
}
}
这是为ObjectDataSource
和代码DetailsView
:
<asp:ObjectDataSource ID="ObjectDataSource1" runat="server"
DataObjectTypeName="Car"
TypeName="CarList"
DeleteMethod="Delete"
InsertMethod="Update"
SelectMethod="Select"
UpdateMethod="Update">
</asp:ObjectDataSource>
<asp:DetailsView ID="DetailsView1" runat="server" AllowPaging="True" AutoGenerateRows="False"
CellPadding="4" DataSourceID="ObjectDataSource1" ForeColor="#333333" GridLines="None"
Height="50px" Width="125px">
<FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
<CommandRowStyle BackColor="#D1DDF1" Font-Bold="True" />
<RowStyle BackColor="#EFF3FB" />
<FieldHeaderStyle BackColor="#DEE8F5" Font-Bold="True" />
<PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />
<Fields>
<asp:BoundField DataField="Id" HeaderText="Id" />
<asp:BoundField DataField="Description" HeaderText="Model" />
<asp:CommandField ShowDeleteButton="True" ShowEditButton="True" ShowInsertButton="True" />
</Fields>
<HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
<EditRowStyle BackColor="#2461BF" />
<AlternatingRowStyle BackColor="White" />
</asp:DetailsView>
当我尝试删除一个项目,做了调试,以方法Delete
,它有这样的参数deletedCar
:
ID = 0 描述ion = null
但是当我对Update
或Insert
执行调试时,方法Car
对象正确填充了正确的数据。
这是怎么回事?
是的,就是这样,谢谢! – Unlimited071 2010-09-27 13:49:19