如何在数据表中获取DataRow的列值

时间:2011-12-19 15:01:49

标签: c# sql-server winforms datatable datarow

我有一个DataTable,它在我的代码中绑定到dataGridview。

当我从数据库获取数据时,gridview工作正常。它充满了数据。 我想要做的是获取指定行的主键值。

例如:

PK         Address          Phone
1          xxxyyyzzz...     1234567   
2          aaabbbccc...     2345678

我想要的是这个。用户将单击任意行,然后单击按钮添加一些内容。 然后我会获得PK值,并做其他的事情。

我该怎么做?

2 个答案:

答案 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;