繁体   English   中英

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

[英]How to make gridview column visible true or false dynamically?

我在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

我尝试了以下答案

如何动态隐藏多个gridview列?

我没有在Visual Studio 2010中找到datarow事件。任何人都可以帮我设置列可见属性吗?

我的数据表的列结构是

column [0]是Value列,然后有4个其他列。

我的网格视图的列结构是列[0]是link field1Value field from Dtable 4其他列的Value field from Dtable

这是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">

这是一个简单的答案。 创建css如下

.classHide{ display:none } 

然后代替column.visible = false ,只需将classHide CSS类分配给该列。

例如

grdRole.Columns(0).ItemStyle.CssClass = "classHide"
    grdRole.Columns(0).HeaderStyle.CssClass = "classHide"

* 强文本 *尝试使用事件ItemDataBound事件并尝试以下语法动态隐藏列:

   mygrid.Columns[1].Visible = false           //(Example)

数据表的列数从0开始,而不是从1开始。 所以如果它是第二列,你要隐藏,索引应该是1。

希望这可以帮助..

右键单击gridview并选择Properties然后选择你会在那里找到的事件RowDataBound双击它并在行数据绑定中写这个

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    e.Row.Cells[0].Visible = false;
}

试试这个:

for (int i = 0; i < YourGrid.Rows.Count; i++)
{
    (YourGrid.Columns[2]).Visible = false;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM