【发布时间】:2016-06-30 19:59:54
【问题描述】:
我的页面中有一个网格视图,我必须从后面的代码中设置(某些列有时不包括在内),但有一列包含超链接。我目前在 .aspx 页面中设置 gridview 和超链接列,如下所示:
<asp:GridView runat="server" ID="GridView1" >
<Columns>
<asp:BoundField DataField="Edit" HtmlEncode="false" HeaderText="" HeaderStyle-Wrap="false" SortExpression="Edit" />
</Columns>
</asp:GridView>
我在后面的代码中绑定了其余的数据:
GridView1.DataSource = dt;
GridView1.DataBind();
Page.DataBind();
链接栏显示正常,链接按预期工作。但是,创建的 GridView 在左侧有链接列,我要显示的所有列,然后在右侧包含链接字符串的另一列,如下所示:
<a href='ForecastComments.aspx?zip=49905&date=1day'>Edit
有什么方法可以让我摆脱这个专栏,但我的链接专栏仍然存在?我无法从表中删除它,因为我需要访问它的链接列。我尝试将后面的代码更改为:
GridView1.DataSource = dt;
GridView1.DataBind();
this.GridView1.Columns[12].Visible = false;
Page.DataBind();
因为我不想显示的列是第 12 列,但 gridview 中的列数显然只有 1(不知道为什么会这样),所以无论如何,它不起作用。奖励:我宁愿将链接列放在表格的右侧,而不是左侧——如果有人也知道如何做到这一点,那就太棒了。
【问题讨论】:
-
好吧.. 使用调试器.. 当你越过这条线
GridView1.DataSource = dt;使用快速观察并点击放大镜告诉我们有多少列回来了.. 还有列在这种情况是0base 不是 ``base` -
@MethodMan 问题是,Gridview1.Columns 唯一计数的列是显式声明的列。所以,当我按照你的建议在调试器中查看时,我可以看到我的表的所有 12 列。但是,我无法访问第 12 列,因为它没有在 .aspx 页面中声明。由于我需要自动生成列,因此我不能只使用上面尝试的方法。