Как получить значение столбца DataRow в Datatable - PullRequest
1 голос
/ 19 декабря 2011

У меня есть DataTable, который привязан к dataGridview в моем коде.

Когда я получаю данные из базы данных, gridview работает нормально. он заполняется данными. Я хочу получить значение первичного ключа указанной строки.

Ex:

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

То, что я хочу, это. Пользователь нажимает на любую строку, а затем нажимает на кнопку, чтобы добавить некоторые вещи. Тогда я получу значение PK и сделаю другие вещи.

Как я могу это сделать?

Ответы [ 2 ]

3 голосов
/ 19 декабря 2011

Хм, можете ли вы указать, как и когда вы говорите о получении этого значения?

Вы можете сделать это:

int index = dt.Rows.IndexOf(row);

Но я не уверен, какой смысл в этом, если у вас уже есть указанная строка, почему вы не можете просто получить ПК через row[columnName]?

Но это более ресурсоемкий процесс, чем просто цикл с помощью цикла 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();
            }

        }
2 голосов
/ 19 декабря 2011

Элемент управления DataGridView привязывается к DataTable с помощью класса DataView.Вы можете использовать что-то вроде этого, чтобы получить DataRow для DataGridViewRow

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;
...