C#GridView中RadioButton选中显示不正确问题!

今天在GridView中插入RadioButton控件显示的时候遇到的问题,就是从根据从数据库获取的数据判断用户对文件的权限是哪一种(只读、读写、拒绝

根据对应的权限,选中相应的RadioButton控件

这是之前的代码:

  protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        try
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                LinkButton lb = (LinkButton)e.Row.Cells[1].FindControl("filenameBtn");
                RadioButton rb1 = (RadioButton)e.Row.Cells[3].FindControl("RadioButton1");    //只读
                RadioButton rb2 = (RadioButton)e.Row.Cells[3].FindControl("RadioButton2");    //读写
                RadioButton rb3 = (RadioButton)e.Row.Cells[3].FindControl("RadioButton3");   //拒绝
                RadioButton rb4 = (RadioButton)e.Row.Cells[3].FindControl("RadioButton4");   //无
                FileAction fa = new FileAction();
                string shuxing = "";
                if (gonghaotxt.Text != "") //如果选择了用户
                {
                    DataTable dt = fa.Get_ceshi_User_File(gonghaotxt.Text.ToString().Trim());//查询选择的用户对应文件的权限
                    DataTable Dt = fa.Get_ceshi_File_Quanxian(lb.CommandArgument.ToString().Trim());//查询文件的属性组
                    if (dt.Rows.Count != 0)//如果用户对文件权限有分配
                    {
                        if (Dt.Rows.Count != 0)
                        {
                            for (int k = 0; k < Dt.Rows.Count; k++)
                            {
                                if (dt.Rows[0]["QxId"].ToString().Contains(Dt.Rows[k]["QxId"].ToString()))//判断是否包含该文件的权限组
                                {
                                    shuxing = Dt.Rows[k]["QxName"].ToString().Trim();
                                    switch (shuxing)
                                    {
                                        case "只读":
                                            rb1.Checked = true;
                                            break;
                                        case "读写": 
                                            rb2.Checked = true;
                                            break;
                                        case "拒绝":
                                            rb3.Checked = true;
                                            break;
                                        default:
                                            break;
                                    }
                                
                                    break;
                                }
                                else
                                {
                                    rb4.Checked = true;
                                }

                            }

                        }

                    }
                    else
                    {
                        rb4.Checked = true;
                    }
                }
                else
                {
                    rb4.Checked = true;
                }

          }
        }
        catch (Exception E)
        {
            Response.Write(E);
        }
    }

上面就出现了一个问题,就是如果用户对文件权限的显示是“只读”,RadioButton的选中就正确,但是,如果对应的权限不是“只读”,而是“读写”或者“拒绝”的话,RadioButton就会开小差选中“无”,调试了半天,感觉都没错,最后还是找大神才解决的,问题就在于,一开始     if (dt.Rows[0]["QxId"].ToString().Contains(Dt.Rows[k]["QxId"].ToString()))//判断是否包含该文件的权限组     不满足的话  rb4.checked=true    在RadioButton中,以第一次选择为准,也就是说,在for循环中如果一开始选中  rb4.checkd=true;即使后面因为条件变化原因改选成  rb2.checked=true;  那么实际上,选中的依然是 rb4.checked=true;  除非在改变 rb2.checked之前先 设置 rb4.checked=false



 switch (shuxing)
                                    {
                                        case "只读":
                                            rb4.Checked = false;
                                            rb1.Checked = true;
                                            break;
                                        case "读写":
                                            rb4.Checked = false;
                                            rb2.Checked = true;
                                            break;
                                        case "拒绝":
                                            rb4.Checked = false;
                                            rb3.Checked = true;
                                            break;
                                        default:
                                            break;
                                    }

改成这样就正确了,原先以为后面选中的话,先前选中的就会被覆盖掉,以后面的为准,其实不然,还是自身学的不够透彻!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值