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