首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

GridView,怎样在后台控制前台的一些列显示或者隐藏,该如何解决

2012-04-26 
GridView,怎样在后台控制前台的一些列显示或者隐藏比如GridView前台绑定了三个列 分别为 “查看” “修改” “

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



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


[解决办法]
GridView1.Columns[1].Visible=false;//隐藏第二列
GridView1.Columns[1].Visible=true;//显示第二列
[解决办法]
探讨

在其他事件,比如按钮事件中可以Gridview1.Columns[i].Visible = false

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

[解决办法]
隐藏某行或列:
xx.Rows[索引].Visible = false;
xx.Columns[索引].Visible = false;

[解决办法]
C# code
Asp.net2.0GridView隐藏列visible="false" 后你就无法取得这列的值了, 而用datagrid就没有这个问题  protected void GVList_RowDataBound(object sender, GridViewRowEventArgs e)   {   //隐藏不必要的列   if ((e.Row.RowType == DataControlRowType.DataRow) || (e.Row.RowType == DataControlRowType.Header) || (e.Row.RowType == DataControlRowType.Footer))   {   e.Row.Cells[0].Visible = false;   e.Row.Cells[3].Visible = false;   }   }  这是迄今为止最简洁的解决方法了。 实例:protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)        {            //隐藏不必要的列            if ((e.Row.RowType == DataControlRowType.DataRow) || (e.Row.RowType == DataControlRowType.Header) || (e.Row.RowType == DataControlRowType.Footer))            {                                   e.Row.Cells[3].Visible = false;                      e.Row.Cells[4].Visible = false;               // e.Row.Cells[3]序号从0开始算            }          } 

热点排行