C#Silverlight Datagrid - ADO.Net数据实体CRUD?

时间:2009-09-06 18:43:25

标签: silverlight entity-framework datagrid ado.net

我遵循了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。

2 个答案:

答案 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)

经过大量谷歌搜索后,this教程证明可以帮助我完成我想做的事情,并提供了极好的帮助!

祝所有继续这项实施的人好运。

: - d