DataList 嵌套绑定CheckBoxList [记录, 以免忘记哈.]

ContractedBlock.gif ExpandedBlockStart.gif Code
<!--段落-->
<div>
<asp:DataList ID="Menu" runat="server" OnItemDataBound="Menu_ItemDataBound" RepeatDirection="Horizontal">
    
<ItemStyle VerticalAlign="Top" />
    
<ItemTemplate>
        
<div style="float:left; width:120px;">
            
<div>
                
<asp:CheckBox ID="opt" runat="server" onClick="onCheck(this);" Text='<%#Eval("MenuName") %>' />
                
<href="javascript:;" onclick="onView('<%#Eval("MenuNo") %>')" ><label style="color:Red; line-height:24px;" id="lbl_<%#Eval("MenuNo") %>">展开</label></a>
                
                
<div style="margin-left:10px;" id="cont_<%#Eval("MenuNo") %>">
                    
<asp:CheckBoxList runat="server" ID="two_menu" name="two" οnclick="resetOpt(this);">
                        
                    
</asp:CheckBoxList>
                
</div>
            
</div>
        
</div>
    
</ItemTemplate>
</asp:DataList>
</div>

 

 .cs

 1 // 绑定datalist 
 2 protected   void  BindMenu()
 3 ExpandedBlockStart.gifContractedBlock.gif {
 4  ICollection<Org_SysMenusRecords> fMenu = org_first.getMenu();
 5    Menu.DataSource = fMenu;
 6    Menu.DataKeyField = "MenuNo";
 7    Menu.DataBind();
 8}

 9 // ItemDataBound 事件中绑定checkboxlist
10 rotected  void  Menu_ItemDataBound( object  sender, DataListItemEventArgs e)
11 ExpandedBlockStart.gifContractedBlock.gif {//purview list
12    string parent = Menu.DataKeys[e.Item.ItemIndex].ToString();
13    BindPurview(parent, (CheckBoxList)e.Item.FindControl("two_menu"));
14}

15
16 protected   void  BindPurview( string  parent, CheckBoxList bb)
17 ExpandedBlockStart.gifContractedBlock.gif {
18    ICollection<Org_SysSecMenusRecords> sMenu = org_second.getMenuByParent(parent);
19    if (sMenu.Count > 0)
20ExpandedSubBlockStart.gifContractedSubBlock.gif    {
21        bb.DataSource = sMenu;
22        bb.DataTextField = "ChildMenuName";
23        bb.DataValueField = "ChildMenuNo";
24        bb.DataBind();
25    }

26}

27
28 // 绑定 checkboxlist的值
29 protected   void  BindPurviewSelected( int  argid)
30 ExpandedBlockStart.gifContractedBlock.gif {
31    employee.Value = argid.ToString();
32    Org_UserRecords item = org_employees.SelectOrg_UserRecords(argid);
33    //string[] purview = item.purview.Split(new char[] { ',' });
34    string purview = item.purview;
35    foreach (DataListItem oDataListItem in Menu.Items)
36ExpandedSubBlockStart.gifContractedSubBlock.gif    {//注意这里. ListItem
37        foreach (ListItem oListItem in ((CheckBoxList)oDataListItem.FindControl("two_menu")).Items)
38ExpandedSubBlockStart.gifContractedSubBlock.gif        {
39ExpandedSubBlockStart.gifContractedSubBlock.gif            if (purview.Contains(oListItem.Value)) {
40                oListItem.Selected = true;
41                ((CheckBox)oDataListItem.FindControl("opt")).Checked = true;
42            }

43        }

44    }

45}
 
46
47  
48
49   // 得到checkboxlist的值
50 protected   void  purviewEdit()
51 ExpandedBlockStart.gifContractedBlock.gif {
52    if (string.IsNullOrEmpty(employee.Value))
53        return;
54
55    string resultValue = string.Empty;
56    foreach (DataListItem oDataListItem in Menu.Items)
57ExpandedSubBlockStart.gifContractedSubBlock.gif    {
58        if (((CheckBox)oDataListItem.FindControl("opt")).Checked)
59ExpandedSubBlockStart.gifContractedSubBlock.gif        {
60            foreach (ListItem item in ((CheckBoxList)oDataListItem.FindControl("two_menu")).Items)
61ExpandedSubBlockStart.gifContractedSubBlock.gif            {
62                if (item.Selected)
63                    resultValue += item.Value + ",";
64            }

65        }

66    }

67    //resultValue.TrimEnd(new char[] { ',' });
68ExpandedSubBlockStart.gifContractedSubBlock.gif    if (!org_employees.UpdateOrg_UserRecords("Org_UserRecords.purview", resultValue.TrimEnd(new char[] ',' }), int.Parse(employee.Value)))
69        lblRurviewError.InnerHtml = "An update error about purview";
70}

71


 js 全选 [没有反选]

// 根据opt判断全选  
//
注意获取父级node 然后判断全选
//
<javascript>
ExpandedBlockStart.gifContractedBlock.gif
function  onCheck(obj) {
    
var nextNode = obj.parentNode;
    
var cb = nextNode.getElementsByTagName("input");
    
ExpandedSubBlockStart.gifContractedSubBlock.gif    
for(var i=0;i<cb.length;i++){
ExpandedSubBlockStart.gifContractedSubBlock.gif        
if(cb[i].type == "checkbox"){
ExpandedSubBlockStart.gifContractedSubBlock.gif            
if(obj.checked){
                cb[i].checked 
= true;
            }

ExpandedSubBlockStart.gifContractedSubBlock.gif            
else {
                cb[i].checked 
= false;
            }

        }

    }
    
}


//  haha . 很喜欢这个效果.
ExpandedBlockStart.gifContractedBlock.gif
function  resetOpt(obj)  {
    
var e = obj.getElementsByTagName("input");
    
var choose = false;
    
for(var i=0;i<e.length;i++)
ExpandedSubBlockStart.gifContractedSubBlock.gif    
{
        
if(e[i].type == "checkbox")
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
ExpandedSubBlockStart.gifContractedSubBlock.gif            
if(e[i].checked){
                choose 
= true;
            }

        }

    }

ExpandedSubBlockStart.gifContractedSubBlock.gif    
if(choose){
        obj.parentNode.parentNode.getElementsByTagName(
"input")[0].checked = true;
    }

ExpandedSubBlockStart.gifContractedSubBlock.gif    
else {
        obj.parentNode.parentNode.getElementsByTagName(
"input")[0].checked = false;
    }

}

转载于:https://www.cnblogs.com/yuanchong/archive/2009/03/26/1422644.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值