我遵循了this教程,该教程允许我创建一个从SQL Server数据库中提取数据的Silverlight DataGrid
。我的下一步是能够对这组数据执行CRUD(希望通过DataGrid
只需编辑更新等字段并回复此帖子)。我被告知需要将datagrid设置为具有“双向绑定模式” - 但我不确定如何执行此操作,因为DataGrid
的Xaml实际上是<data:DataGrid></data:Datagrid>
- (由于DataGrid
已从工具箱中删除到Page.xaml文件并自动生成。
我特别想继续使用这个ADO.Net Entity Framework实现。任何人都可以给我一些建议,或者指出一些正确的方向吗?我将不胜感激。
亲切的问候。
修改 如果您不介意快速浏览一下我链接的教程的内容,以便您准确理解我的设置是什么,这将是一个很大的帮助。我是Silverlight的新手,基本上只是想知道如何使用ADO.Net Entity Framework和Silverlight Datagrid在数据库上执行CRUD。
答案 0 :(得分:0)
落花生,
我不确定我是否会回答你的问题,但我会告诉你如何从代码中将信息绑定到DataGrid
,并将该信息设置为双向绑定。
首先,这是一个link,讨论单向,一次和双向绑定之间的区别。
在数据网格中进行编辑后,有三种方法可以更改数据源:
<强>第一强> 您可以手动设置XAML中的列,并指示对每个变量的绑定是“双向”。
<data:DataGrid Name="data" AutoGenerateColumns="False">
<data:DataGrid.Columns>
<data:DataGridTextColumn Header="Test"
Binding="{Binding test, Mode=Two-Way}"/>
</data:DataGrid.Columns>
</data:DataGrid>
<强>第二强> 您可以在页面后面的代码中执行相同的操作。
rpdata.ItemsSource = info;
rpdata.Columns.Clear();
DataGridTextColumn user = new DataGridTextColumn();
user.Header = "User";
user.Binding = new System.Windows.Data.Binding("User");
user.Binding.Mode = BindingMode.TwoWay;
rpdata.Columns.Add(user);
rpdata
表示数据网格。
<强>第三强>
您可以将“CellEditEnded”事件添加到数据网格,而不是手动链接每个列,如下所示。
并在事件的代码中,您可以添加以下代码:
xt.CommitEdit();
这会更新数据源。
您必须为您的服务创建一个新合同,该合同将接收数据网格已更新的实体。
[OperationContract]
public void UpdateWork(List<Assumptions> updates)
这里我的实体被称为'假设'。
在该操作合同中,您添加以下代码。
//Create a new entity datacontext
Entities ds = new Entities();
//For each of the entities in the list
foreach (Assumptions update in updates)
{
try
{
//In the datacontext find the entity with the same primary key as the updated one
var test = from x in ds.Assumptions
where x.ID.Equals(update.ID)
select x;
//Update the entity
test.First() = update;
}
catch (Exception e)
{
//If the entity does not exist, add it to the context
ds.AddToAssumptions(update);
}
}
//Save the context
ds.SaveChanges();
答案 1 :(得分:0)