如何使gridview列动态显示true或false?

时间:2013-11-28 07:14:40

标签: c# asp.net gridview

我在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 field1Value field from Dtable 其他4个栏目

5 个答案:

答案 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;
}