Получение значения от ячейки от gridview на событии RowDataBound

31
задан Radiodef 5 April 2015 в 05:09
поделиться

4 ответа

Сначала необходимо перенести код в Label или Literal управление так, чтобы можно было сослаться на него правильно. То, что происходит, - то, что нет никакого пути к системе для отслеживания его, потому что нет никакого управления, связанного с текстом. Это - обязанность управления добавить ее содержание к состоянию отображения.

необходимо использовать gridView. FindControl ("controlName"); получить контроль в строке. Оттуда можно достигнуть его свойства включая Text.

можно также достигнуть свойство DataItem рассматриваемой строки и бросать его к соответствующему типу и извлекать информацию непосредственно.

11
ответ дан 27 November 2019 в 21:28
поделиться

Выше приведены хорошие предложения, но вы можете получить текстовое значение ячейки в виде сетки без ее переноса. в буквальном или метке управления. Вам просто нужно знать, к какому событию подключиться. В этом случае используйте вместо этого событие DataBound, например, так:

protected void GridView1_DataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        if (e.Row.Cells[0].Text.Contains("sometext"))
        {
            e.Row.Cells[0].Font.Bold = true;
        }
    }
}

При запуске отладчика вы увидите текст, отображаемый в этом методе.

13
ответ дан 27 November 2019 в 21:28
поделиться

почему бы не вытягивать данные непосредственно из источника данных.

DataBinder.Eval(e.Row.DataItem, "ColumnName")
52
ответ дан 27 November 2019 в 21:28
поделиться

Когда Вы используете TemplateField и связываете буквенный текст с ним как Вы, делают, asp.net на самом деле вставит управление ДЛЯ ВАС! Это помещается в DataBoundLiteralControl. Вы видите это, если Вы смотрите в отладчике около Вашей строки кода, которая получает пустой текст.

Так, для доступа к информации, не изменяя шаблон для использования управления Вы бросили бы как это:

string percentage = ((DataBoundLiteralControl)e.Row.Cells[7].Controls[0]).Text;

, Который получит Вас Ваш текст!

23
ответ дан 27 November 2019 в 21:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: