我有一个DataTable
,它在我的代码中绑定到dataGridview。
当我从数据库获取数据时,gridview工作正常。它充满了数据。 我想要做的是获取指定行的主键值。
例如:
PK Address Phone
1 xxxyyyzzz... 1234567
2 aaabbbccc... 2345678
我想要的是这个。用户将单击任意行,然后单击按钮添加一些内容。 然后我会获得PK值,并做其他的事情。
我该怎么做?
答案 0 :(得分:3)
嗯,你能说明你在谈论获得这个价值的方式和时间吗?
你可以这样做:
int index = dt.Rows.IndexOf(row);
但是我不确定那是什么意思,如果你已经有指定的行,为什么你不能通过row[columnName]
获得PK?
但这比使用for循环循环更耗费资源。
在绑定到dataGridView之前或之后是否需要这个?如果需要从dataGridView行获取不同的值。
对于您的修改:
您可以像这样获得所选行:
if (yourDataViewGrid.SelectedRows.Count == 1)
{
Int pk = yourDataViewGrid.Rows[yourDataViewGrid.SelectedRows[0].Index].Cells["PK"].Value.ToString();
}
如果您通过其他方法(例如使用复选框选择行)来执行此操作,则可以执行此操作:
foreach (DataGridViewRow row in YourDataGridView.Rows)
{
if ((Boolean)((DataGridViewCheckBoxCell)row.Cells["CheckBoxName"]).FormattedValue)
{
Int pk = rows.Cells["PK"].Value.ToString();
}
}
答案 1 :(得分:2)
DataGridView控件使用DataView类绑定到DataTable。你可以使用这样的东西来获取DataGridViewRow的DataRow
var vrow = (DataRowView)grid.Rows[12].DataBoundItem; // get the bound object
var drow = vrow.Row; // the Row property references the real DataRow
其中12是您要查找的索引。有时,将DataSource属性显式设置为DataView并在表单上保留对它的引用会有所帮助。该视图也将知道数据的排序
var view = new DataView(table);
grid.DataSource = view;