我用了datalist嵌套checkboxlist,但checkboxlist怎么也不能动态绑定数据;
我想实现这种效果;大类(例:办公耗材)
  口 小类(例:打印纸) 口 小类(例:打印纸) 口 小类(例:打印纸)
  口 小类(例:打印纸) 口 小类(例:打印纸) 口 小类(例:打印纸)而且大类和小类都是从数据库中提取的.
小类绑定时我用了
 DataSource='<%# ((DataRowView)Container.DataItem).Row.GetChildRows("relation") %>'
但显示不出数据,高手们救命呀

解决方案 »

  1.   

    像这样的主-细表的情况,可以用DATAGRID做数据显示控件好些,可以利用她的DATAITEM事件在运行试动态绑定。
      

  2.   

    能说一下用DataGrid怎么实现,行吗,谢谢
      

  3.   

    确认你的GetChildRows的Length>0,把你的编码贴出来,或者参考HOW TO:使用嵌套 Repeater 控件和 Visual C# .Net 显示分层数据
    http://support.microsoft.com/kb/306154/zh-cn
      

  4.   

    一:前台datalist控件:
    <asp:datalist id="DataList1" runat="server" Width="688px" CssClass="pt10" OnItemDataBound="DataList1_ItemDataBound">
    <ItemTemplate>
    <asp:Label id=Father_ID runat="server" Text='<%# DataBinder.Eval(Container.DataItem,"Father_ID")%>' Visible="False">
    </asp:Label>
    <asp:Label id="Application_Name" runat="server" Width="100" ForeColor="#ffffff" BackColor="#339966"></asp:Label><BR>
    <asp:CheckBoxList id="Application_ID" runat="server" CssClass="pt10" Visible="true" RepeatColumns="5"
    Height="30px"></asp:CheckBoxList>
    </ItemTemplate>
    </asp:datalist>
      

  5.   

    后台:
    private void Page_Load(object sender, System.EventArgs e)
    {
    // 在此处放置用户代码以初始化页面
    if (!Page.IsPostBack)
    {
    this.DataList1.DataSource=Bll.Application_System_GetSource();
    this.DataBind();
    }
    }
      

  6.   

    后台补充:
    public void DataList1_ItemDataBound(Object sender, DataListItemEventArgs e)
    {    
    Label Father_ID=(Label)e.Item.FindControl("Father_ID");
    Label Application_Name=(Label)e.Item.FindControl("Application_Name"); if (Application_Name!=null)
    {
    Model=Bll.GetApplication_SystemDetail(Father_ID.Text.Trim());
    Application_Name.Text=" "+Model.Application_Name;

    }
    if(Father_ID!=null )
    {
    System.Web.UI.WebControls.CheckBoxList Application_ID=(System.Web.UI.WebControls.CheckBoxList)e.Item.FindControl("Application_ID");
    Application_ID.DataSource=Bll.Application_System_GetSource(Father_ID.Text.Trim());
    Application_ID.DataTextField="Application_Name";
    Application_ID.DataValueField="Application_ID";
    Application_ID.DataBind();
    }
    }
      

  7.   

    怎么没有连接数据的代码,datalist 和 checkboxlist要绑定数据库的
      

  8.   

    哪位高手能留个QQ吗,我们在QQ里讨论
      

  9.   

    楼主用的直接绑定DataSource的方法是可行的
    其中用到DataRow.GetChildRows,那么必须要定义好表间关系 DataRelationyb2008的方法也可以,思路比较清晰,但是不如楼主自己的方便~
      

  10.   

    定义表间Relation的代码如下: DataColumn parentCol = DataSet1.Tables["Customers"].Columns["CustID"];
     DataColumn childCol = DataSet1.Tables["Orders"].Columns["CustID"];
              
     DataRelation relCustOrder = new DataRelation("CustomersOrders", parentCol, childCol);
              
     DataSet1.Relations.Add(relCustOrder);
      

  11.   

    谢谢"零零五",那我绑定checkboxlist时定义datatextfield时怎么显示不出来,那里只显示
    System.Data.Rows,是怎么回事呢
      

  12.   

    楼主明白我的思路了没??
    1.在Page_Load中绑定datalist:父数据源2.在datalist的OnItemDataBound事件中根据父数据源的id,找到满足条件的子数据源绑定到checkboxlist中!
      

  13.   

    yb2008:
    this.DataList1.DataSource=Bll.Application_System_GetSource();
    this.DataBind();
    我这里不太明白,再解释一下好吗?谢谢.要绑定数据库呀,你怎么没有连接数据库的代码
      

  14.   

    前台:
    <asp:TemplateColumn ItemStyle-HorizontalAlign="center" HeaderText="顺序码" ItemStyle-Width="10%">
    <ItemTemplate>
    <asp:Label id="ShowSortID" runat="server" Text='<%# Container.DataItem("SortID") %>'>
    </asp:Label>
    </ItemTemplate>
    <EditItemTemplate>
    <asp:DropDownList id="SortID" runat="server" DataSource="<%# DDLBind()%>" SelectedValue='<%# Container.DataItem("SortID")%>'>
    </asp:DropDownList>
    </EditItemTemplate>
    </asp:TemplateColumn>
    后台:
        Protected Function DDLBind() As ArrayList
            Dim arrCount As New ArrayList
            Dim i As Integer
            For i = 0 To pager.RecordCount
                arrCount.Add(i)
            Next
            Return arrCount
        End Function希望楼主可以有所收获!
      

  15.   

    我采用的是三层结构编写,返回的数据源是DataSet!
    你如果要测试可以随便返回一个数据源就可以了!
      

  16.   

    wfz131(wfz131) ( ) 信誉:100  2006-02-28 09:14:00  得分: 0  
       谢谢"零零五",那我绑定checkboxlist时定义datatextfield时怎么显示不出来,那里只显示
    System.Data.Rows,是怎么回事呢  ---------
     
    再细心检查一下,看看有没有写错~
    <asp:TemplateColumn>
    <ItemTemplate>
    <asp:CheckBoxList id="CheckBoxList1" runat="server" DataTextField="field1" DataValueField="field2" DataSource='<%# ((DataRowView)Container.DataItem).Row.GetChildRows("relation") %>'
    ></asp:CheckBoxList>
    </ItemTemplate>
    </asp:TemplateColumn>
      

  17.   

    把checkboxlist做成usercontrol 在itemdatabound里传入参数
      

  18.   

    字段名肯定弄错了~
    把你的这两个DataTable的数据结构列出来一下吧:btw:我们公司不能用QQ、MSN等即时通讯工具...
      

  19.   

    为什么不用DataGrid和模板来实现?
    要不就是用TABLE自己画表格。反正就是不喜欢用DataList……
      

  20.   

    零零五:
    我的表格
            menu          submenu
       
             id            id
           menuname        Mid(就是表menu的id)
           addtime         subname
                           addtime
    就是这两个表关联.
    谢谢零零五热帮助
      

  21.   

    Page_Load
    ......reader = cmd.ExecuteReader();
    boardList.DataSource = reader;
    boardList.DataTextField = "Name";
    boardList.DataValueField = "ID";
    boardList.DataBind();
    ..........
      

  22.   

    我再加100分,请教绑定后怎么取出与checkboxlist选项对应的数据库的值
      

  23.   

    绑定后一般都是用findcontrol(“checkboxlist的名字”)来定位控件,定位控件后就可以利用相应的属性来得到值了
      

  24.   

    我设了一个全局变量checkboxlist ,但运行后说找不到该对象
      

  25.   

    (CheckBoxList)e.item.FindControl("checkboxlistname").Items[i].text