当前位置:编程学习 > C#/ASP.NET >>

救命啊!!CSDN的高人们!!我快郁闷死啦!

我有3个数据表 ,一个是用户名单 ,用户名绑定在了dropdownlist。

一个是用户权限表,对应用户名的ID和权限ID。

一个是权限表,对应权限ID和权限名字。绑定在了gridview上面

我现在想实现如果点击dropdownlist上面的名字,就会把该名字的权限ID对应到gridview的权限ID并在该行的checkbox显示打上钩。

这个代码上面应该怎么实现啊!!快要死啦! --------------------编程问答-------------------- datagridview绑定权限表.

选中后再进行判断使其选中


你自己已经把实现逻辑给说了.

现在是什么问题.
不会是要具体代码吧! --------------------编程问答-------------------- .。。那个。。判断的代码应该怎么写。。 --------------------编程问答-------------------- 你把代码贴出来,帮你填充吧.
--------------------编程问答-------------------- 我先select 用户权限表的权限ID,然后select权限表ID

然后这个两个ID如果相等就checkbox.checked=true是吗。。 --------------------编程问答-------------------- 额 ,是否这样? 


楼主是不是要这样,在   OnRowUpdating事件中处理,传递当前GridView,对比角色中的权限,并显示

SetBitValue(gv, "chkView",pb,Permission.View);

  public void SetBitValue(GridView gv, string id, PermissionBase pb, Permission p)
    { 
       if(gv.EditIndex==-1)return;

       CheckBox cb = gv.Rows[gv.EditIndex].FindControl(id) as CheckBox;
       if (cb == null)
           return;
       if (cb.Checked)
       {
           pb.SetBit(p);
       }
       else
       {
           pb.Deny(p);
       }
    } --------------------编程问答-------------------- 在你的dropdownlist的SelectedIndexChanged事件下取用户用户ID或是权限ID.


遍历dgv你应该没有问题吧.
遍历过程中进行比较,相等就选中

以下是选中的代码

[code=C#]DataGridViewCheckBoxCell cbh = (DataGridViewCheckBoxCell)this.DataGridView1.Rows[count].Cells["你的选中列(DataGridViewCheckBoxCell)"];
                    this.DataGridView1.Rows[count].Cells["你的选中列(DataGridViewCheckBoxCell)"].Value = true;
                    code] --------------------编程问答-------------------- 。。我的那个代码就只是绑定了一下dropdownlist,还有gridview,往下就不知道怎么写了。。 --------------------编程问答--------------------
引用 6 楼 libinguest 的回复:
在你的dropdownlist的SelectedIndexChanged事件下取用户用户ID或是权限ID.


遍历dgv你应该没有问题吧.
遍历过程中进行比较,相等就选中

以下是选中的代码

[code=C#]DataGridViewCheckBoxCell cbh = (DataGridViewCheckBoxCell)this.DataGridView1.Rows[count].Cells["你的选中列(DataGridViewCheckBoxCell)"];
                    this.DataGridView1.Rows[count].Cells["你的选中列(DataGridViewCheckBoxCell)"].Value = true;
                    code]


。。遍历dgv这是什么啊?怎么你的代码没有sql查询语句啊?。。这样子能行吗。。 --------------------编程问答-------------------- 。。遍历dgv这是什么啊?怎么你的代码没有sql查询语句啊?。。这样子能行吗。。


不知道如何回答你了.

。。我的那个代码就只是绑定了一下dropdownlist,还有gridview,往下就不知道怎么写了。。

你得一步步来.
你先理清实现的思路,写出来.帮你实现吧! --------------------编程问答--------------------
引用 5 楼 windinwing 的回复:
额 ,是否这样? 


楼主是不是要这样,在   OnRowUpdating事件中处理,传递当前GridView,对比角色中的权限,并显示

SetBitValue(gv, "chkView",pb,Permission.View);

  public void SetBitValue(GridView gv, string id, PermissionBase pb, Permission p)
    {
      if(gv.EditIndex==-1)return;

      CheckBox cb = gv.Rows[gv.EditIndex].FindControl(id) as CheckBox;
      if (cb == null)
          return;
      if (cb.Checked)
      {
          pb.SetBit(p);
      }
      else
      {
          pb.Deny(p);
      }
    }


我这么清楚说dropdownlist。。 --------------------编程问答--------------------
引用 9 楼 libinguest 的回复:
。。遍历dgv这是什么啊?怎么你的代码没有sql查询语句啊?。。这样子能行吗。。


不知道如何回答你了.

。。我的那个代码就只是绑定了一下dropdownlist,还有gridview,往下就不知道怎么写了。。

你得一步步来.
你先理清实现的思路,写出来.帮你实现吧!


那我现在开始了啊。。你一直都在的是把。。 --------------------编程问答-------------------- 关键是你那句sql语句怎么写 --------------------编程问答-------------------- dropdownlist也就是选中后打勾?  我以为你是要选角色列出权限。

 dropdownlist的value对应 checkbox的ID,选中后关联? --------------------编程问答-------------------- --------------------编程问答--------------------
引用 13 楼 windinwing 的回复:
dropdownlist也就是选中后打勾?  我以为你是要选角色列出权限。

 dropdownlist的value对应 checkbox的ID,选中后关联?


对的。。 --------------------编程问答--------------------
引用 12 楼 garfield_li 的回复:
关键是你那句sql语句怎么写


select power_id from UserRole where userId=dropdownlist1.selected

select power_id from RoleName

这样子对吗?。。然后用dr读取上面的值进行对比? --------------------编程问答-------------------- 来人啊。。 --------------------编程问答-------------------- 帮顶 --------------------编程问答-------------------- 我来说说  
1.dropdownlist的SelectedIndexChanged事件下获得当前选中用户的id,
  并查询数据库得到该用户所拥有的权限的id,假设是个List<string> lStr,里面存放的是该用户的权限(字符串什么的都可以),把这个数字设置为属性 私有的,
2.gridview 有一个datarowbound方法  在这个方法里面判断  如果当前行的权限存在于数组中 就设置checkbox的属性为选中状态 代码大概如下
List<string> lStr=new List<string>();
SelectedIndexChanged(。。。){
//查询该用户ID对应的权限
lStr=GetPurviewByUserID(userid);
BindGV();
}
BindGV(){
//查询所有权限绑定gridview

}

 protected void gv_RowDataBound(object sender, GridViewRowEventArgs e){
            if (e.Row.RowType == DataControlRowType.DataRow){
//这个地方保证该行是数据绑定行  不是表头或者表尾等
 DataRowView drv = (DataRowView)e.Row.DataItem;
if(lStr.Contains(drv["PurviewID"].tostring())){//PurviewID是个列名
 Checked chchkPurviewk = e.Row.FindControl("chkPurview") as Checked;
//chkPurview 是该行checkedbox控件的id
chchkPurviewk.checked=true;
}
}}

希望能对你有帮助 注意绑定gridview数据源的时候 数据集中要有PurviewID列名
最好下拉框和页面都用   
<asp:UpdatePanel ID="up" runat="server" ><ContentTemplate>  </ContentTemplate></asp:UpdatePanel>
包裹起来  还有什么疑问可以 加我qq   67780558
--------------------编程问答-------------------- 好的!我现在先把你的方法研究下!今晚回去加你QQ! --------------------编程问答-------------------- 加你QQ没反应。。
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,