Сначала необходимо перенести код в Label
или Literal
управление так, чтобы можно было сослаться на него правильно. То, что происходит, - то, что нет никакого пути к системе для отслеживания его, потому что нет никакого управления, связанного с текстом. Это - обязанность управления добавить ее содержание к состоянию отображения.
необходимо использовать gridView. FindControl ("controlName"); получить контроль в строке. Оттуда можно достигнуть его свойства включая Text
.
можно также достигнуть свойство DataItem рассматриваемой строки и бросать его к соответствующему типу и извлекать информацию непосредственно.
Выше приведены хорошие предложения, но вы можете получить текстовое значение ячейки в виде сетки без ее переноса. в буквальном или метке управления. Вам просто нужно знать, к какому событию подключиться. В этом случае используйте вместо этого событие 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;
}
}
}
При запуске отладчика вы увидите текст, отображаемый в этом методе.
почему бы не вытягивать данные непосредственно из источника данных.
DataBinder.Eval(e.Row.DataItem, "ColumnName")
Когда Вы используете TemplateField и связываете буквенный текст с ним как Вы, делают, asp.net на самом деле вставит управление ДЛЯ ВАС! Это помещается в DataBoundLiteralControl. Вы видите это, если Вы смотрите в отладчике около Вашей строки кода, которая получает пустой текст.
Так, для доступа к информации, не изменяя шаблон для использования управления Вы бросили бы как это:
string percentage = ((DataBoundLiteralControl)e.Row.Cells[7].Controls[0]).Text;
, Который получит Вас Ваш текст!