我想創建一個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等)。
任何援助將不勝感激!
編輯:如果有更好的方法來使用實體框架做雙向數據綁定,我也很樂意聽到這些建議。我並沒有設定目前我一直在嘗試的事情,只是想知道做到這一點的最佳方式。
數據源控件自動生成並處理插入和更新記錄。如果您只是將數據讀入列表,那麼當您更改列表中的數據時,您不會將該數據發送回數據庫(它將更改保留在列表中)。 –
KreepN
@KreepN:好的,所以它聽起來像只有數據源控件可以自動執行此操作。將更改發送回數據庫的最佳方式是什麼?我真的不在乎這是如何實現的,只要它能夠工作......感謝您的回覆! – Sesame