【问题标题】:C# Silverlight Datagrid - ADO.Net Data Entities CRUD?C# Silverlight Datagrid - ADO.Net 数据实体 CRUD?
【发布时间】:2009-09-06 18:43:25
【问题描述】:

我遵循了this 教程,该教程允许我创建一个 Silverlight DataGrid 从 SQL Server 数据库中提取数据。我的下一步是能够对这组数据执行 CRUD(希望通过 DataGrid 只需编辑更新字段等并返回此帖子)。我被告知需要将数据网格设置为具有“双向绑定模式”-但是我不确定如何执行此操作,因为 DataGrid 的 Xaml 实际上是 <data:DataGrid></data:Datagrid> -(因为 @987654326 @ 已从工具箱中拖放到 Page.xaml 文件中并自动生成)。

我特别想继续使用这个 ADO.Net Entity Framework 实现。有人可以给我一些建议或用一些样本为我指明正确的方向吗?我将不胜感激。

亲切的问候。

编辑: 如果您不介意快速浏览我链接到的教程的内容,以便您准确了解我的设置,那将是一个很大的帮助。我是 Silverlight 的新手,基本上只是想知道如何使用 ADO.Net Entity Framework 和 Silverlight Datagrid 在数据库上执行 CRUD。

【问题讨论】:

    标签: silverlight entity-framework datagrid ado.net


    【解决方案1】:

    经过大量谷歌搜索,this 教程证明可以帮助我完成我想做的事情,并且是一个很棒的帮助!

    祝所有继续执行此实施的人好运。

    :-D

    【讨论】:

      【解决方案2】:

      古伯,

      我不确定我是否会回答您的问题,但我将向您展示如何将信息绑定到代码中的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();
      

      【讨论】:

      • 所以,目前我使用 ADO.Net 实体框架作为我的数据库和 silverlight 数据网格之间的中间人。我需要采取哪些步骤才能将此设置从简单的检索和显示数据的方式更改为能够进行更改并将其持久化回数据库? (我目前看不到上面的代码适合我的项目,因为目前实际上很少发生)。
      • 那么我是否必须为我希望数据网格包含的每个可编辑列定义一个新的“”?
      • 是的,尽管您可以将数据源绑定到网格,并循环通过 rpdata.Columns 并将绑定模式设置为双向(在代码中)。我还没有测试过。
      • 不敢相信我在问这个,感觉就像一个完整的菜鸟(最近才在 winforms 上 3 年后才切换到 web) - foreach 循环在哪里?在 xt.commitedit() 之后;在 DATAGRID_CellEditEnded 事件中!?
      • 好吧,我重新格式化了我的答案,也许这会让事情更清楚
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-01-04
      • 1970-01-01
      • 1970-01-01
      • 2010-12-11
      • 2018-01-07
      • 2010-11-25
      • 1970-01-01
      相关资源
      最近更新 更多