注册 登录
编程论坛 ASP.NET技术论坛

如何动态隐藏gridview中符合设定条件的一列

zkai0813 发布于 2010-06-03 14:24, 4495 次点击
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            if (GridView1.Columns[11].ToString() == "完成")
            {
                GridView1.Columns[16].Visible = false;
            }         
    }
11列是事件状态列 16列是删除列(用的是linkbutton)
我想根据完成状态的情况来显示与隐藏删除这一列 状态是完成时就隐藏删除列
上面的代码要怎么改呢? 帮帮忙
14 回复
#2
hhy4204596742010-06-03 15:23
第11列是不是个模板列  如果是:“完成”是什么控件?LinkButton,还是Button?
你看看这样子行不行?“完成”是个LinkButton,在模板列中:

 protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {  
            string comStr = ((LinkButton)e.Row.Cells[11].FindControl("完成的ID值")).Text.ToString();
            if (comStr == "完成")
            {
                e.Row.Cells[16].Visible = false;
            }
        }
#3
zkai08132010-06-03 15:45
"完成"的状态时隔dropdownlist控件
#4
o嘟嘟o2010-06-03 15:53
路过
#5
zkai08132010-06-03 15:54
异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。

源错误:


行 141:        if (e.Row.RowType == DataControlRowType.DataRow)
行 142:        {
行 143:            string constr = ((DropDownList)e.Row.Cells[10].FindControl("hidEnventState")).Text.ToString();
行 144:            if (constr == "完成")
行 145:            {
 
我试了你写的代码 报错了 帮我看下
#6
zkai08132010-06-03 16:10
回复 2楼 hhy420459674
异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。

源错误:


行 141:        if (e.Row.RowType == DataControlRowType.DataRow)
行 142:        {
行 143:            string constr = ((DropDownList)e.Row.Cells[10].FindControl("hidEnventState")).Text.ToString();
行 144:            if (constr == "完成")
行 145:            {

我试了你写的代码 报错了 帮我看下
#7
hhy4204596742010-06-03 16:31
回复 6楼 zkai0813
不会错  我试过了  我想你的错误应该是其他的吧....
你把那句代码改成:((DropDownList)e.Row.Cells[10].FindControl("hidEnventState")).SelectedValue
其实是一样的  只是让你试试看有没有错!我试过了
#8
hhy4204596742010-06-03 16:41
回复 6楼 zkai0813
还有  刚刚我试过你写的代码了  是可以实现的啊?
而且比我写的那个还好些  我写的那个是有局限性的...没有考虑完整的!
就用你写的那个吧!我试过没问题的!!
#9
zkai08132010-06-03 16:44
回复 7楼 hhy420459674
<asp:TemplateField HeaderText="事件状态">
                                <EditItemTemplate>
                                    <asp:DropDownList ID="d1" runat="server" DataSource='<% #drbind() %>' DataValueField="EnventState"
                                        DataTextField="EnventState">
                                    </asp:DropDownList>
                                    <input id="hidEnventState" type="hidden" value='<%# Eval("EnventState") %>' runat="server" />
                                </EditItemTemplate>
                                <ItemTemplate>
                                    <asp:Label ID="Label1" runat="server" Text='<%# Bind("EnventState") %>'></asp:Label>
                                </ItemTemplate>
                            </asp:TemplateField>
这是我要依据的下拉框的值来决定隐藏删除列与否
#10
冰镇柠檬汁儿2010-06-03 16:48
我是该说点什么呢,还是该装作什么都没看见路过呢?
#11
冰镇柠檬汁儿2010-06-03 16:49
算了,我还是说点什么吧,楼主,与其去掉,你为什么从数据库里读值的时候不少读那些你需要去掉的记录呢????
#12
hhy4204596742010-06-03 16:59
就是直接用你写的代码就可以搞定的!我试过了啊!
#13
zkai08132010-06-03 17:19
回复 12楼 hhy420459674
奇怪了 我这里运行部报错 但是没有我想要的效果
#14
冰镇柠檬汁儿2010-06-03 17:34
那会不会是你数据的问题?
1