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);
}
gridview不显示}
上⾯就出现了⼀个问题,就是如果⽤户对⽂件权限的显⽰是“只读”,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;                                    }
改成这样就正确了,原先以为后⾯选中的话,先前选中的就会被覆盖掉,以后⾯的为准,其实不然,还是⾃⾝学的不够透彻!

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。