2013-11-22 28 views
0

我想創建一個ASP.NET頁面以允許使用實體框架的基本CRUD操作。使用Telerik的RadListView,我有以下HTML:RadListView與實體框架的數據綁定 - 插入/更新/刪除

<telerik:RadListView ID="RadListView1" runat="server" OnNeedDataSource="RadListView1_NeedDataSource"> 
<ItemTemplate> 
    <table> 
     <tr> 
      <td>First Name: 
       <%#Eval("FirstName")%> 
      </td> 
     </tr> 
     <tr> 
      <td> 
       <asp:Button ID="btnEdit" runat="server" Text="Edit" CommandName="Edit" Width="70px"></asp:Button> 
      </td> 
     </tr> 
    </table> 
</ItemTemplate> 
<EditItemTemplate> 
    <table> 
     <tr> 
      <td>First Name: 
       <asp:TextBox ID="txtFirstName" runat="server" Text='<%#Bind("FirstName")%>'></asp:TextBox> 
      </td> 
     </tr> 
     <tr> 
      <td> 
       <asp:Button ID="btnUpdate" runat="server" Text="Update" CommandName="Update" Width="70px"></asp:Button> 
      </td> 
     </tr> 
    </table> 
</EditItemTemplate> 

這裏是後面的代碼:

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!Page.IsPostBack) 
    { 
     RadListView1.DataSource = GetData(); 
    } 
} 

protected void RadListView1_NeedDataSource(object sender, Telerik.Web.UI.RadListViewNeedDataSourceEventArgs e) 
{ 
    RadListView1.DataSource = GetData(); 
} 

private List<Person> GetData() 
{ 
    using (BuildingAccessEntities ctx = new BuildingAccessEntities()) 
    { 
     var query = from a in ctx.People 
        orderby a.FirstName 
        select a; 

     return query.ToList(); 
    } 
} 

到目前爲止,這個代碼可以正確地顯示在人口稠密RadListView。當我點擊編輯按鈕時,RadListView切換到編輯模式,並允許我編輯選定的記錄;但是,當我單擊更新按鈕以保存記錄時,更改不會保存。

我還沒有試圖看看插入和刪除行爲是否也是這樣。我確信2-way綁定應該是RadListView非常簡單的東西,但我是新來的,並且一直沒能找到許多例子來使這個工作,而不是通過使用數據源控件(SqlDataSource, EntityDataSource等)。

任何援助將不勝感激!

編輯:如果有更好的方法來使用實體框架做雙向數據綁定,我也很樂意聽到這些建議。我並沒有設定目前我一直在嘗試的事情,只是想知道做到這一點的最佳方式。

+0

數據源控件自動生成並處理插入和更新記錄。如果您只是將數據讀入列表,那麼當您更改列表中的數據時,您不會將該數據發送回數據庫(它將更改保留在列表中)。 – KreepN

+0

@KreepN:好的,所以它聽起來像只有數據源控件可以自動執行此操作。將更改發送回數據庫的最佳方式是什麼?我真的不在乎這是如何實現的,只要它能夠工作......感謝您的回覆! – Sesame

回答

0

這樣做其實很簡單。 Look here for how the Telerik demo handles manual CRUD commands.

專注於RadListView2_ItemUpdating,因爲它是你正在尋找使用。只要你知道更新通過,那麼你可以在那裏完成。如果它失敗,問題將會出現,導致您的數據源中有一組數據用於您的列表視圖,另一組數據則位於數據庫中。

處理這個問題真的取決於您,因爲您可以從數據庫重新加載數據以確保用戶能夠看到實際存在的內容,或者可以提醒他們提交幫助票證時出現錯誤。你明白了。