1。
<asp:TemplateColumn>
          <ItemTemplate>中
<asp:CheckBoxList id=cbl_test runat=server/>
        
2。
      OnItemDataBound中     CheckBoxList cbl=(CheckBoxList)e.Item.FindControl("cbl_test");
     if(cbl!=null){
           cbl.DataSource = sth;
        cbl.DataBind();
     }

解决方案 »

  1.   

    OnItemDataBound事件中
    dim cbl as checkboxlistcbl=e.item.findcontrol("checkboxlist1")
    cbl.datasource=...
    cbl.DataTextField="id"
    cbl.DataValueField="name"
    cbl.databound()
      

  2.   

    也许对你有启发。
    我用的是自定义控件,在摸班中嵌套了控件(菜单-》子菜单-》菜单项)<%@ Control Language="C#" Debug="true" %>
    <%@ Register TagPrefix="lei" TagName="menuitem" Src="UserLayerSubMenuObject.ascx" %>
    <%@ import Namespace="System" %>
    <%@ import Namespace="System.Data" %>
    <%@ import Namespace="System.Data.SqlClient" %>
    <%@ import Namespace="System.Reflection" %>
    <%@ import Namespace="Lei.BusinessLayer" %>
    <script runat="server">    // Insert user control code here
                    //
          public string MenuUserClientID="0";
          public string MenuUserRoleNo="0";
          public string MenuUserParentNo="0";
        
               void BindMenu()
               {
                       string sqlStr = "status = 1 and parentNo = "+MenuUserParentNo;
                        sqlStr += " and ( menuNo in (select parentNo from t_menulayout where menuNo in (select parentNo from v_menugrants where clientID = '"+this.MenuUserClientID+"' and roleNo = " + this.MenuUserRoleNo+"))";
                        sqlStr += " or menuNo in (select parentNo from v_menugrants where clientID = '"+this.MenuUserClientID+"' and roleNo = " + this.MenuUserRoleNo+"))";
        
                       MenulayoutObject userObj = new MenulayoutObject();
                       DataSet userData = userObj.GetData(sqlStr);
                       MenuDataList.DataSource = userData.Tables[0].DefaultView;
                       MenuDataList.DataBind();
               }
        
               void Page_Load(Object Sender, EventArgs E)
               {
                       //if (!Page.IsPostBack)
                        {
                          //if(UserClientID.Length>0 && RoleNo.Length>0)
                          BindMenu();
                         }
               }
     </script>
        <asp:Repeater id="MenuDataList" runat="server">
            <ItemTemplate>
                <div class="<%#DataBinder.Eval(Container.DataItem, "leaf").ToString()=="1"?"tbMenuItem":"tbMenu"%>"
                    id="Menu_<%#DataBinder.Eval(Container.DataItem, "menuNo")%>" LANGUAGE="javascript"
                    onclick="<%#DataBinder.Eval(Container.DataItem, "leaf").ToString()=="1"?"js_doWorkUrl("+Page.Request.ApplicationPath+"/"+DataBinder.Eval(Container.DataItem, "href")+";":""%>"
                    title='<%#DataBinder.Eval(Container.DataItem, "appendix")%>'> <%# DataBinder.Eval(Container.DataItem, "title") %> 
                    <LEI:MENUITEM id="usermenuitem" runat="server" MenuUserParentNo='<%#DataBinder.Eval(Container.DataItem, "menuNo").ToString() %>' MenuUserRoleNo="<%#MenuUserRoleNo%>" MenuUserClientID="<%#MenuUserClientID%>"></LEI:MENUITEM>
                </div>
            </ItemTemplate>
        </asp:Repeater>
    </div>
    .................