如何在C#中将DataRow转换为DataRowView

13

如何将DataRow转换为DataRowView?

例如:

   DataTable dt=ds.Tables[0];
   DataRow dr= dt.NewRow();           
   DataRowView drv = ???? 
4个回答

28

使用

DataTable dt=ds.Tables[0];
DataRow dr= dt.NewRow();         
DataRowView drv= dt.DefaultView[dt.Rows.IndexOf(dr)];

1
你必须记住,如果默认视图已被过滤,则索引可能不对齐。类似的解决方案请参考https://dev59.com/yUXRa4cB1Zd3GeqPogs2#6989851。 - marbel82

2
DataRowView selecRow = dataTable.DefaultView.Cast<DataRowView>().FirstOrDefault(a => a.Row == desRow);

这个工作,没有“where”的话会稍微简短一些;-)


2

如果DataRow的状态是Detached,则上述方法无法使用。可以在这种情况下使用以下代码片段:

        DataRow dRow = dataTable.NewRow();
        //...
        DataRowView dRowView = dRow.Table.DefaultView.AddNew();

        for (int i = 0; i < dRow.ItemArray.Length; i++)
        {
            dRowView.Row[i] = dRow[i];
        }

亲爱的@Subramani,感谢您的帮助,请如果这个问题有用,请设置投票。 - Harry Sarshogh

1
使用。如果DataGrid是有序的,它也可以工作。
DataRowView selecRow = dataTable.DefaultView.Cast<DataRowView>().Where(a => a.Row == desRow).FirstOrDefault();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接