日期:2014-05-18  浏览次数:20522 次

GridView,怎样在后台控制前台的一些列显示或者隐藏
比如GridView前台绑定了三个列 分别为 “查看” “修改” “删除” 代码如下
C# code

   <asp:GridView ID="gv_OrderInfo" runat="server" 
        OnSelectedIndexChanged="gv_OrderInfo_SelectedIndexChanged" 
        AutoGenerateColumns="False" OnRowEditing="gv_OrderInfo_RowEditing" 
        OnRowDeleting="gv_OrderInfo_RowDeleting" 
        OnRowDataBound="gv_OrderInfo_RowDataBound1">
        <Columns>
            <asp:ButtonField CommandName="Select" Text="查看" >
            <ControlStyle ForeColor="Blue" />
            <ItemStyle Width="30px"></ItemStyle>
            </asp:ButtonField>
           
            <asp:ButtonField CommandName="Edit" Text="修改" >
            <ControlStyle ForeColor="Blue" />
            <ItemStyle Width="30px"></ItemStyle>
            </asp:ButtonField>

            <asp:ButtonField CommandName="Delete" Text="删除" >
            <ItemStyle Width="30px"></ItemStyle>
            <ControlStyle ForeColor="Blue" />
            </asp:ButtonField>
           
        </Columns>

    </asp:GridView>




我现在想在后台控制某一列进行隐藏,应该怎么做呢? 比如我控制将“修改”列隐藏 或者将“删除”列隐藏。

------解决方案--------------------
GridView1.Columns[1].Visible=false;//隐藏“修改”列
------解决方案--------------------
GridView1.Columns[1].Visible = false;

GridView1.Columns[2].Visible = false;
------解决方案--------------------
在其他事件,比如按钮事件中可以Gridview1.Columns[i].Visible = false

在RowDataBound 事件中 e.Columns[i].Visible = false

------解决方案--------------------
我更喜欢用Gridview1.Columns[i].Attributes["style"] = "display:none";这种写法,因为Visible=false,将不输出html,在客户端就无法变成visible。
------解决方案--------------------
给ItemStyle绑定个值 

后台设置这个值
------解决方案--------------------
GridView1.Columns[1].Visible = false;

GridView1.Columns[2].Visible = false; 
 

------解决方案--------------------
在rowDataBound事件里添加
if(e.Row.RowType==DataControlRowType.EmptyDataRow){ return; }//防止无数据下面代码错误
e.Row.Cells[0].Visible=false;//隐藏第一列 1第二列
if(e.Row.RowType==DataControlRowType.DataRow)
{
//这里可以修改数据,如:e.Row.Cells[0].Text=(Convert.ToInt32(e.Row.Cells[0].Text)/100).ToString();
}
if(e.Row.RowType==DataControlRowType.Footer)
{
//这里是修改gridview底部显示的
}
------解决方案--------------------
前面说得很清楚了.

用GridView列的Visible属性.
------解决方案--------------------
探讨
在其他事件,比如按钮事件中可以Gridview1.Columns[i].Visible = false

在RowDataBound 事件中 e.Columns[i].Visible = false

------解决方案--------------------
探讨
引用:
在其他事件,比如按钮事件中可以Gridview1.Columns[i].Visible = false

在RowDataBound 事件中 e.Columns[i].Visible = false


MARK

------解决方案--------------------
探讨
在其他事件,比如按钮事件中可以Gridview1.Columns[i].Visible = false