我有一个自动生成列的gridview(有一个List<>
DataSource),现在我需要为它的列指定HeaderText
。我已经搜索了很多内容并检查了之前的一些问题,但发现自动生成的网格没有Columns Collection ,最后我在本文后面创建了自己的自定义网格http://damieng.com/blog/2006/09/25/extending-gridview-to-access-generated-columns
现在我在属性BoundColumns
中获取列集合,我尝试在PageLoad
,RowDataBound
事件上设置HeaderText属性,但都是徒劳的,我需要知道我可以放哪个事件这段代码使它工作
gridUsers.BoundColumns[0].Visible = false;
gridUsers.BoundColumns[1].HeaderText = "Login ID";
gridUsers.BoundColumns[2].HeaderText = "User Name";
gridUsers.BoundColumns[3].Visible = false;
gridUsers.BoundColumns[4].HeaderText = "User Email";
gridUsers.BoundColumns[5].HeaderText = "User Status";
gridUsers.BoundColumns[6].HeaderText = "User Role";
P.S:可见属性正在处理页面加载。任何帮助表示赞赏。
答案 0 :(得分:1)
您不必执行自动生成的列,尤其是在您要手动设置标题时。使用正确的列标题将数据源更改为返回值,或使用<columns><asp:boundfield HeaderText="" >...
并手动指定列(并设置AutoGenerateColumns=false
)。
在大多数情况下,您在RowDataBound事件期间更改了标题和列,但是如果您使用声明性语法或者除非您有特殊的渲染要求,则不需要。
答案 1 :(得分:0)
是的,您可以按照以下方式执行此操作
protected void GridView1_RowDataBound(object sender, System.Web.UI.WebControls.GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.Header)
{
GridView1.Columns[0].HeaderText = "your header text name";
}
}