内部的datalist的数据源有值吗

解决方案 »

  1.   

    有,我还特意吧
    DataList1.DataSource = ds.Tables["BigClass"].DefaultView;
    改成
    DataList1.DataSource = ds.Tables["SmallClass"].DefaultView;
    看了一下.有数据的.
      

  2.   

    发现一个地方好像错了.
    <%# ((System.Data.DataRowView)Container.DataItem).Row.GetChildRows("SmallClass") %>应该是
    <%# ((System.Data.DataRowView)Container.DataItem).Row.GetChildRows("OrderRelation") %>但是改成这样后却提示错误
    DataBinder.Eval:“System.Data.DataRow”不包含名称为 CategoryID 的属性。 
    说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.Web.HttpException: DataBinder.Eval:“System.Data.DataRow”不包含名称为 CategoryID 的属性。源错误: 
    行 30:  </SelectedItemTemplate>
    行 31:  <ItemTemplate>1
    行 32:  <asp:HyperLink id="Hyperlink2" runat="server" NavigateUrl='<%# "productslist.aspx?CategoryID=" + DataBinder.Eval(Container.DataItem, "CategoryID") + "&amp;selection=" + Container.ItemIndex %>' Text='<%# DataBinder.Eval(Container.DataItem, "CategoryName") %>' cssclass="MenuUnselected">
    行 33:  </asp:HyperLink>
    行 34: 
     
      

  3.   

    你的数据源中 确定包含CategoryID这个字段??
      

  4.   

    我的错误是这个Columns and Child Columns don't have type-matching columns. 
      

  5.   

    在cs文件里写一个函数
    public DataTable GetTable(int BigClassID)
    {
        //你的代码
        //功能,根据大类的iD得到其小类的一个表
    }
    绑定表达式变成DataBinder.Eval(Container, "DataItem.\\你的BigClassID")
      

  6.   

    datalist嵌套datalist,我曾套了三层
    在这说说我的实现:foreach(DataListItem it in this.DataList1)
    {
      DataList DL = (DataList) it.FindControls("DataList2");
      DL.DataSource = ………;
      DL.DataBind();
    }
      

  7.   

    我的错误是这个Columns and Child Columns don't have type-matching columns. 你的代码太长,不过这个意思不是很明显啊,就是列及子列没有类型符合的吗?
      

  8.   

    這是datagrid嵌套datagid的例子,你參考一下:<%@ Page Language="vb" Debug="true" %>
    <%@ Import Namespace="System.Data" %>
    <%@ Import Namespace="System.Data.OleDb" %><script language="VB" runat="server">
    dim MyConnection as OleDbConnection
    dim cmdSelect as OleDbCommand
    dim dtrReader as OleDbDataReader
    Sub Page_load(sender as object,e as Eventargs)
        MyConnection = New OleDbConnection( "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=c:\inetpub\wwwroot\nhonline\datagrid\kk.mdb")
        if not IsPostBack() then
        Mydatagrid_DataBind()  
    end if
    End SubSub Mydatagrid_DataBind()
        Dim MyCommand As OleDbDataAdapter = new OleDbDataAdapter("select * from [class]", MyConnection)
        Dim DS As DataSet = new DataSet()
        MyCommand.Fill(DS,"board") 
        BigClassList.DataSource=DS.Tables("board").DefaultView
        BigClassList.DataBind()
    End SubFunction SmallClass(BigClassID) as DataTable
     dim SmallClassData as DataSet =new DataSet()
     MyConnection.Open()
     dim DataAdapter as OleDbDataAdapter = new OleDbDataAdapter("SELECT * FROM [board] WHERE class="& BigClassID &" ORDER BY boardid DESC",MyConnection)
     DataAdapter.Fill(SmallClassData,"SmallClassData")
     MyConnection.Close()
     return SmallClassData.Tables("SmallClassData")
    End Function</script>
    <html>
    <head>
    <title>NHONLINE_BBS_INDEX</title>
    <link rel="stylesheet" href="css.css" type="text/css"> 
    </head>
    <body>
    <form Runat="server">
    <asp:datagrid id="BigClassList"
                   runat="server"
       AutoGenerateColumns="false"
       ShowHeader="false" 
                   ShowFooter="false" 
       >
          <columns>
                    <asp:TemplateColumn>
                       <ItemTemplate>
       <TABLE style="BORDER-COLLAPSE: collapse" borderColor="WHITE" BgColor="#e4eaf2" cellSpacing="0" cellPadding="0" width="400" align="center" border="1">
        <TR>
         <TD> <%#Container.DataItem("class")%></TD>
        </TR>
        </TABLE>
    <!-- ---------------------------------------------------------- -->
         <asp:datagrid id="SmallClassList"
                   runat="server" 
                   AutoGenerateColumns="false" 
                   DataSource='<%# SmallClass(Container.DataItem("id").ToString()) %>'
                   ShowHeader="false" 
                       ShowFooter="false" 
       >
         <columns>
                    <asp:TemplateColumn>
                       <ItemTemplate>
              <TABLE style="BORDER-COLLAPSE: collapse" borderColor="WHITE" BgColor="#DBDBDB" cellSpacing="0" cellPadding="0" width="400" align="center" border="1">
              <TR>
                  <TD width="30"><IMG SRC="pop.gif" WIDTH="29" HEIGHT="29" BORDER="0" ALT=""></TD>
      <TD><%#Container.DataItem("boardtype")%></TD>
              </TR>
              </TABLE>
                       </ItemTemplate>
    </asp:TemplateColumn>
         </columns>
         </asp:datagrid> 
                       </ItemTemplate>
    </asp:TemplateColumn>
              </columns>
    </asp:datagrid> 
    </form>
    </body>
    </html>