7

我有一个 GridView,我想从中获取列标题的文本。

for (int j = 0; j < grdToDisplay.HeaderRow.Cells.Count; j++)
{
    string s = grdToDisplay.HeaderRow.Cells[j].Text.ToString(); //Returns ""
    s = grdToDisplay.HeaderRow.Cells[j].Text; //Returns ""
    s = grdToDisplay.Rows[0].Cells[j].Text; //Returns text from first row of results not the header
   // s = grdToDisplay.Columns[j].HeaderText.ToString(); // does not work as column count is 0
}

GridView 内容是在运行时根据用户查询生成的。标题可以点击排序。

如何循环 GridView 并列出列标题文本?

4

6 回答 6

5

您可以使用GridViewColumn.HeaderText

for (int i = 0; i < grdToDisplay.Columns.Count; i++)
{
    string header = grdToDisplay.Columns[i].HeaderText;
}

编辑

但这不会给我任何结果,因为列数为 0

然后你有AutoGenerateColumns=true并且只有声明性添加的列被计算在内。因此,在数据绑定使用此代码GridView

for (int i = 0; i < grdToDisplay.HeaderRow.Cells.Count; i++)
{
    string header = grdToDisplay.HeaderRow.Cells[i].Text;
}
于 2013-01-10T15:05:12.463 回答
3

由于 GridView 的标题是可排序的,因此您可以从 Linkbutton 获取标题的文本。试试这个:将以下代码放入gridView的DataBind中:

for (int i = 0; i < gridView.HeaderRow.Cells.Count; i++)
            {

                if (gridView.HeaderRow.Cells[i].HasControls())
                {
                    //when gridview is sortable, type of header is LinkButton
                    // Linkbutton is in index 0 of the control
                    if (gridView.HeaderRow.Cells[i].Controls[0] is LinkButton)
                    {
                        LinkButton headerControl = gridView.HeaderRow.Cells[i].Controls[0] as LinkButton;
                       string headerName = headerControl.Text;

                    }

                }

            }
于 2014-06-12T08:15:31.017 回答
0

我根据我在这里和其他线程中阅读的内容创建了自己的解决方案..这里是:

public void HideColumnByName(GridView grid, string header)
        {
            if (grid.HeaderRow.HasControls()==true)
            {
                for (int i = 0; i < grid.HeaderRow.Cells.Count; i++)
                {
                    if (grid.HeaderRow.Cells[i].Text == header)
                    {
                        foreach (GridViewRow row in grid.Rows)
                        {
                            row.Cells[i].Visible = false;
                            grid.HeaderRow.Cells[i].Visible = false;
                        }
                    }

                }
            }
        }

该方法直接隐藏列的标题和单元格,其中标题名称(或列名称)是传递给我的方法的字符串参数(“标题”参数)。然后从我的 gridview 的“DataBound”事件中调用“HideColumnByName”方法。简单的。希望这可以帮助 !它确实对我有用!:)

于 2014-07-23T01:29:57.540 回答
0

我最近在做一些最近的编码时遇到了这个问题,每当我尝试获取标题文本时,即使在数据绑定事件上它也总是返回空白。当我想尝试根据列自己的控制方案转换标题时,我才想到了解决方案。

事实证明,使 gridview 可排序会将标题文本转换为其他内容,从而无法简单地从标题中获取信息而不进行转换。我自己对这个问题的解决方案是在我要求文本时简单地让它不可排序,但假设这是不可能的,我确实遇到了获取文本的解决方案,即使它在另一个线程中是可排序的:

启用 AllowSorting 时 ASP.NET GridView 标题行文本为空

于 2015-07-21T16:46:51.607 回答
0
grdExcel.HeaderRow.Cells[0].Text.ToString();
于 2020-09-09T05:45:48.013 回答
0

在此处输入图像描述
如果模板列基于数据源,则标题文本返回文件名

  • GridView.Columns(i).HeaderText

但是如果您需要首先获取列的标题文本,请使用该行

  • GridView.HeaderRow.Cells(i).Text

此链接可以帮助您 获取 Gridview 单元格的标题文本

于 2016-06-09T10:45:46.890 回答