2010-09-24 18 views
5

पर्यावरण: asp.net ढांचा 2.0हटाएँ ObjectDataSource समस्याओं

मैं एक कस्टम वस्तु पर की Delete विधि और ObjectDataSource साथ समस्या हो रही हूँ। 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 है:

आईडी = 0 वर्णन आयन = अशक्त

लेकिन जब मैं Update या Insert तरीके Car वस्तु सही ढंग से सही डेटा के साथ से भर जाता है के लिए एक डीबग करना।

क्या चल रहा है?

उत्तर

8

विवरण दृश्य में डेटाकेनेम्स (प्राथमिक कुंजी संपत्ति) सेट करें।

<asp:DetailsView DataKeyNames="ID" /> 
+0

हाँ, यह था, धन्यवाद! – Unlimited071