可以或如何将DataRow转换为DataRowView?
例如:
DataTable dt=ds.Tables[0];
DataRow dr= dt.NewRow();
DataRowView drv = ????
Run Code Online (Sandbox Code Playgroud) 这里的情况:我需要绑定一个WPF FixedPage反对DataRow.绑定不起作用DataRows; 他们反对DataRowViews.我需要以最通用的方式做到这一点,因为我一无所知,也无法控制内容DataRow.
我需要的是能够得到DataRowView一个给定的DataRow.我不能使用该Find()方法,DefaultView因为它接受一个键,并且不能保证该表将具有主键集.
有没有人建议最好的办法解决这个问题?
我有一个System.Windows.Forms.DataGridView来展示我类型的对象IECInstance。
我正在构建一个DataTable表并用我的对象填充表,并将 DataTable 设置为我的 DataGridView 的数据源。所以我的 DataGridView 正确显示了我的对象。
我现在的问题是在选择行时获取对象。
我的第一次尝试是使用这个:
IECInstance theObjectIWant = dataGridView.SelectedRows[0].DataBoundItem as IECInstance.
Run Code Online (Sandbox Code Playgroud)
但DataBountItem返回一个DataRowView. 所以我在这里发现了很多关于这个问题的问题,有些人建议使用这个:
var drv = dataGridView1.SelectedRows[0].DataBoundItem as DataRowView;
var row = drv.Row as DataRow;
var val = row[X] as MyType;
Run Code Online (Sandbox Code Playgroud)
但据我所知,行[X]是对单元格(列)的访问,所以它与我的问题不匹配。
当我使用 aList<IECInstances>作为数据源而不是 DataTable 时,属性 DataBoundItem 返回正确的对象。但实际上我不想将数据源设置为列表。
为了确保:当我谈论对象时,我指的是 IECInstace 类型的业务对象。
有没有办法让一个选择的索引DataRowView中DataRow?
我目前有以下代码
private long GetSelectedIndex(DataView dataView, string searchString)
{
long selectedIndex = 0;
foreach(DataRowView dataRow in dataView)
{
if(dataRow.Row.ItemArray.Contains(searchString)
{
//Do Something.... I've tried everything to get the index out of the dataRow
}
}
return selectedIndex;
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试以编程方式向绑定源添加新行。我知道调用 bsSource.AddNew() 添加一个新行,我将其转换为 DataRowView 并设置我的值。我的问题是 - DataRowView.Row 显示 RowState 为 detached。我不希望它被分离;我相信它应该显示已添加 - 我也不希望它提交对数据库的更改(有一个非常有效的理由)。我想稍后选择时间。我的代码如下:
private Sub AddToRelationSource(binID As Integer, gradeID As Integer, IsChecked As Boolean)
Dim drv As DataRowView = DirectCast(bsBinGrades.AddNew(), DataRowView)
drv.Row("IsSelected") = IsChecked
drv.Row("BinID") = binID
drv.Row("GradeID") = gradeID
' I tried drv.EmdEdit(0 drv.Row.EndEdit() - Row State still shows detached
End Sub
Run Code Online (Sandbox Code Playgroud) 我当前正在尝试获取 DataGrid 中选定行的内容。
问题是我实际上得到了一个 DataRowView 但我无法用它做任何事情......
我想访问 DataGrid 中所选行的所有字段。
这是可以帮助您的代码:
XAML:
<DataGrid SelectionUnit="FullRow" SelectedItem="{Binding SelectedZone, Mode=TwoWay}" AutoGenerateColumns="True" Margin="0,167,6,24" Name="existingCase" Width="780" >
<DataGrid.RowStyle>
<Style TargetType="{x:Type DataGridRow}">
<EventSetter Event="MouseDoubleClick" Handler="resultDataGrid_MouseDoubleClick"/>
</Style>
</DataGrid.RowStyle>
</DataGrid>
Run Code Online (Sandbox Code Playgroud)
CS :
private void resultDataGrid_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
if (sender != null)
{
SelectedZone = existingCase.SelectedItem;
// SelectedZone is declared as private object SelectedZone
MessageBox.Show(SelectedZone.GetType().ToString());
// Result to a System.Data.DataRowView
}
}
Run Code Online (Sandbox Code Playgroud)
感谢您的帮助
datarowview ×6
c# ×4
dataview ×2
winforms ×2
wpf ×2
binding ×1
datagrid ×1
datagridview ×1
datarow ×1
dataset ×1
datatable ×1
defaultview ×1
vb.net ×1
xaml ×1