我在asp.net中使用GridView,如下所示:
mygrid.DataSource = dTable;
mygrid.DataBind();
if (mygrid.Columns.Count > 1)
{
mygrid.Columns[2].Visible = false;
}
我的网格视图代码如下
<asp:GridView ID="mygrid" runat="server" AllowPaging="True"
onpageindexchanging="mygrid_PageIndexChanging" PageSize="15"
PersistedSelection="true"
ondatabound="mygrid_DataBound">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:HyperLink ID="Edit" runat="server" Text="Edit" NavigateUrl='<%# Eval("Value", "~/myweppage.aspx?Id=M{0}") %>' />
</ItemTemplate>
</asp:TemplateField>
</Columns>
<PagerSettings PageButtonCount="4" />
</asp:GridView>
此处我无法设置visible=false
。
我尝试了以下答案
How do I make several gridview columns invisible dynamically?
我在Visual Studio 2010中找不到datarow
事件。任何人都可以帮我设置列可见属性吗?
我的数据表的列结构是
列[0]是Value
列,然后有4个其他列。
我的网格视图的列结构是
列[0]是link field
列1为Value field from Dtable
其他4个栏目
答案 0 :(得分:6)
这是gridview
中动态生成列的完美解决方案请试试这个:
int indexOfColumn = 1; //Note : Index will start with 0 so set this value accordingly
protected void mygrid_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.Cells.Count > indexOfColumn)
{
e.Row.Cells[indexOfColumn].Visible = false;
}
}
对于.aspx页面编辑gridview标记如下:
<asp:GridView ID="mygrid" runat="server" AllowPaging="True"
onpageindexchanging="mygrid_PageIndexChanging" PageSize="15"
PersistedSelection="true"
ondatabound="mygrid_DataBound"
OnRowDataBound="mygrid_RowDataBound">
答案 1 :(得分:1)
这是一个简单的答案。创建css如下
.classHide{ display:none }
然后代替column.visible = false
,只需将classHide
CSS类分配给列。
e.g。
grdRole.Columns(0).ItemStyle.CssClass = "classHide"
grdRole.Columns(0).HeaderStyle.CssClass = "classHide"
答案 2 :(得分:1)
* 强文 *尝试使用事件ItemDataBound
事件并尝试使用以下语法动态隐藏列:
mygrid.Columns[1].Visible = false //(Example)
数据表的列数从0开始,而不是从1开始。所以如果它是第二列,你想要隐藏,索引应该是1。
希望这会有所帮助..
答案 3 :(得分:1)
右键单击gridview并选择Properties然后选择你会在那里找到的事件RowDataBound双击它并在行数据绑定中写这个
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
e.Row.Cells[0].Visible = false;
}
答案 4 :(得分:0)
试试这个:
for (int i = 0; i < YourGrid.Rows.Count; i++)
{
(YourGrid.Columns[2]).Visible = false;
}