ASP.NET GridView 有没有办法根据您所在的单元格获取列名
本文关键字:单元格 获取 GridView NET 有没有 ASP | 更新日期: 2023-09-27 18:22:18
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
foreach (TableCell cell in e.Row.Cells)
{
// .... here ....
cell.Text = cell.Text.Replace(entry.Value, "<span class='highlightSearchTerm'>" + entry.Value + "</span>");
}
}
}
它说的部分....这里。。。。我需要以某种方式获取数据网格的列名。因此,根据我当前所在的单元格,我需要获取列名称。稍后在代码中,根据我在哪个列中,我需要为单元格执行不同的格式设置。此外,列名在运行时是未知的,它们是动态生成的,所以我需要一个通用方法来获取列名。
试试这个:
string currentColName = GridView1.Columns[GridView1.CurrentCell.ColumnIndex].Name;
按列 Name 如果你的意思是HeaderText
那么你可以使用 for
循环而不是 foreach
,使用索引得到HeaderText
像:
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
for (int i = 0; i < e.Row.Cells.Count; i++)
{
TableCell cell = e.Row.Cells[i];
string HeaderText = yourGridView.Columns[i].HeaderText;
cell.Text = cell.Text.Replace(entry.Value,
"<span class='highlightSearchTerm'>" + entry.Value + "</span>");
}
}
}
}
您可以更改循环的方式,并制作类似以下内容:
for (int i = 0; i < gvMyLista.Rows.Count; i++)
{
// get your data as...
// gvMyLista.Rows[i].Cells[2].Text
}
您可以直接看到cell
和row
.gvMyLista
是网格视图的 ID。
现在,如果您在此处进行格式设置,则在回发后可能会更改,因为数据可能不会再次绑定,因此我建议在PreRender上进行格式化,这里有一个类似的问题: 回发后如何在网格视图上保留颜色? asp.net C#
我必须为自己制定一种方法来达到这个目的。像这样的东西应该内置到对象中,这样我们就可以轻松获得我们需要的信息。不幸的是,当它没有内置时,我们必须自己获取它:
/// <summary>
/// Makes the assumption that the TableCell is a bound DataControlField cell, and returns the name of the column of the table
/// </summary>
/// <param name="tc"></param>
/// <returns></returns>
private string GetColumnNameOfTableCell (TableCell tc)
{
return ((BoundField)((DataControlFieldCell)tc).ContainingField).DataField;
}