none
datagrid 行的操作与数据的绑定 RRS feed

  • 问题

  • 有人了解datagrid吗,我单击其中一行中的一个button,想获得这一行其他列的值,搞半天也不知道怎么去操作
    还有就是,我想单击某一行的时候,获得这一行数据的其中一个字段值,但是这个字段值我不希望显示在datagrid上,怎么去弄啊

    2009年11月6日 7:43

答案

全部回复

  • 参考
    http://dotnet.aspx.cc/article/d8b2be01-78df-4804-89c3-9c9a80f6938f/read.aspx
    【孟子E章】
    • 已标记为答案 internet5 2009年11月9日 6:33
    2009年11月6日 13:34
    版主
  • 你找到你的Button,给它加一个事件,
    如下代码:
    Button b = MyDataGrid.Counm[Button所在的单元格].getColloctionCell(e.row).findNamd("Button 的ID") as Button;
    b.Click += .......

    2009年11月9日 5:13
  • 相当简单的。你可以直接把选中的行转换成你的数据类。
    1.相关点击行中的按扭取值:
    例如:你的DataGrid绑定的是以下这个类:
    public class mydata
    {
      public int id {get;set;}
      public string userId{get;set}
    }
    或者是你wcf或.net ria service中返回的数据类。你可以通下以下方式还原被选中DataGrid行为数据类:
                if (dg.SelectedItems.Count > 0)
                {
                    //这个mydata就是你自定议的数据类
                    mydata md=(mydata)dg.SelectedItem;
                }
    把以上这段代码放到你的每一个行中的button的click事件中即可取出DataGrid中的值并转换成数据类。

    2.利用问题1回答你可以知道完全可以把数据类还原,因此,取得数据的其中一个字段值这个问题已经解决。

    3.不希望DataGrid中不显示一个字段已又想这个值可以存在。
    这个你可以利用自定义DataGrid的Columns来实现不要显示指定的字段而又可以结合1回答的方式取得这个不显示的字段的值。
    a.先把DataGrid的AutoGenerateColumns 属性设为False.
    b.自定义Columns。以上边的数据类我设成只显示userId不显示id字段的显示方式,而且在取值的时候可以取到没有显示出来的id字段的值:
    <data:DataGrid x:Name="dg" AutoGenerateColumns="False">
                <data:DataGrid.Columns>
                 <data:DataGridTextColumn
                        CanUserReorder="True" Header="用户ID" Binding="{Binding userId}" />
                </data:DataGrid.Columns>
            </data:DataGrid>
    c.在取值的时候和回答1里一样。
    希望我的回答对有所帮助。
    如果本答案帮你解决了问题请把本回复设为答案.谢谢

    jaocb lai
    2009年11月9日 6:27
    版主
  • 你的答案很不妥啊,没有理解楼主的意思。  button会捕获鼠标事件,所以按button时 dg.SelectedItem不会不一定是想要的行。 
    VNN是款不错的软件,它将更好!http://www.vnn.cn/
    2009年11月9日 8:04