我正在尝试创建一个ASP.NET页面,以允许使用Entity Framework进行基本的CRUD操作。使用Telerik的RadListView,我有以下HTML:
<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将切换到“编辑”模式并允许我编辑所选记录;但是,当我单击“更新”按钮保存记录时,不会保存更改。
我还没有尝试过看看插入和删除行为是否也是这样。
我确信双向绑定应该是RadListView非常简单的东西,但我是新手,并且除了使用数据源控件(SqlDataSource,EntityDataSource)之外,还没有找到很多例子来使其工作。等等。)。
非常感谢任何帮助!
编辑:如果有更好的方法使用Entity Framework进行双向数据绑定,我也很乐意听到这些建议。我没有按照当前的方式设置我一直在尝试的事情,只是想知道最好的方法。
答案 0 :(得分:0)
这样做实际上很容易。 Look here for how the Telerik demo handles manual CRUD commands.
专注于RadListView2_ItemUpdating
,因为它正是您要使用的内容。只要您知道更新完成,那么您就可以完成更新。问题是如果失败,导致您的数据源中有一组数据用于列表视图,而另一组数据存储在数据库中。
处理这一点取决于您,因为您可以从数据库重新加载数据以确保用户看到实际存在的内容,或者您可以提醒他们错误以提交帮助票证。你明白了。