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属性.
------解决方案--------------------
------解决方案--------------------
------解决方案--------------------