Как найти значение конкретной строки в gridview? - PullRequest
2 голосов
/ 06 августа 2011

Как я могу найти значение конкретной строки в gridview. Скажем, gridview имеет 10 строк и 4 столбца. Я знаю, что мы можем найти номер строки из индекса строки, но как мы можем узнать, каково значение столбца 2 строки 5 (согласно моему сеточному обзору) или узнать значение ячейки?

Ответы [ 4 ]

4 голосов
/ 06 августа 2011

Используйте следующее:

CustomersGridView.Rows[rowIndex].Cells[cellIndex].Text

Подробнее о .Rows collection

Если вас интересует метод FindControl, наиболее подходящим событием для вас является RowDataBound :

void CustomersGridView_RowDataBound(Object sender, GridViewRowEventArgs e)
{
    if(e.Row.RowType == DataControlRowType.DataRow)
    {
        var control = e.Row.Cell[cellIndex].FindControl("ControlID");
        e.Row.Cells[1].Text = ((TypeOfControl)control).Text;
    }
}
3 голосов
/ 06 августа 2011

Предполагая одну ячейку на столбец, это должно помочь:

string cellValue = GridView1.Rows[4].Cells[1].Text;

Это даст вам значение столбца 2 в строке 5.

В зависимости от того, как строится строка (если, например, один столбец имеет DropDownList или какой-либо другой такой элемент управления), возможно, вам лучше выполнить FindControl(controlID).

ОБНОВЛЕНИЕ

Скажем, у вас есть DropDownList во 2-м столбце с ID = "ddlMyDropDown":

DropDownList ddl = (DropDownList)GridView1.Rows[4].FindControl("ddlMyDropDown");

В каком событии вводится код, зависит от того, почему вы пытаетесь найти значение.Если вы можете привести пример того, когда / почему вам нужно получить значение, мы можем сообщить вам, в каком событии оно должно происходить.

ОБНОВЛЕНИЕ 2

Предполагая, что в строке есть кнопка, обработайте событие RowCommand:

protected void GridVie1_RowCommand(object sender, GridViewCommandEventArgs e)
{

    rowIndex = Convert.ToInt32(e.CommandArgument);

    DropDownList ddl = (DropDownList)GridView1.Rows[rowIndex].Cells[1].FindControl("ddlMyDropDown");

    // Do something
}

Однако будьте осторожны, поскольку RowCommand запускается при каждом нажатии кнопки в строке, поэтому вынеобходимо убедиться, какая кнопка была нажата.Вы можете использовать e.CommandName, чтобы получить CommandName кнопки, если вы ее установили, но имейте в виду, что есть некоторые предопределенные имена.

См. Событие GridView.RowCommand для получения дополнительной информации.

Если вы можете обновить свой вопрос, добавив некоторую дополнительную информацию (например, зачем вам нужно получить значение и какое взаимодействие с GridView запустит этот процесс, например, при нажатии кнопки), можно дать более точный ответ.

Я почти закончил на ночь, но завтра проверю эту ветку.

2 голосов
/ 06 августа 2011

Если вы знаете значение ячейки, мы можем найти строку

protected void GridView1_DataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        if (e.Row.Cells[0].Text.Contains("sometext"))
        {
            //code here..
        }
    }
}
1 голос
/ 06 августа 2011
string cellText = gridView.Rows[5].Cells[2].Text;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...