<asp:Repeater runat="server" ID="rptypelist1" OnItemDataBound="rptypelist_ItemDataBound">
                                                <ItemTemplate>
                                                    <tr>
                                                        <td background="Images/l3.gif">
                                                            &nbsp;&nbsp;<a href="Lists.aspx?Qtid=<%# Eval("ID") %>"></a> <span id="askCount_15"
                                                                class="date2">
                                                                <%#Eval("SortName")%></span>
                                                            <asp:Repeater runat="server" ID="rpquestionlist2">
                                                                <ItemTemplate>
                                                                    <a href="Question.aspx?qid=<%#Eval("SortName")%>">
                                                                        <%#Eval("SortName")%></a><br />
                                                                </ItemTemplate>
                                                            </asp:Repeater>
                                                        </td>
                                                    </tr>
                                                </ItemTemplate>
                                            </asp:Repeater>
public void RpTypeBind()
    {
        Conn.Open();
        string sql = "select * from sk_ProductSort where ParentID=0 ";
        Comm = new OleDbCommand(sql, Conn);
        OleDbDataAdapter da = new OleDbDataAdapter(Comm);
        DataSet ds = new DataSet();
        da.Fill(ds);
        this.rptypelist1.DataSource = ds.Tables[0].DefaultView;
        this.rptypelist1.DataBind();
        Conn.Close();
    }
    protected void rptypelist_ItemDataBound(object sender, RepeaterItemEventArgs e)
    {
        if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
        {
            Repeater rptypelist1 = e.Item.FindControl("rptypelist1") as Repeater;//找到里层的repeater对象
            DbDataRecord rowv =(DbDataRecord)e.Item.DataItem;//找到分类Repeater关联的数据项 
            int typeid = Convert.ToInt32(rowv["ID"]); //获取填充子类的id 
            string sql1 = "select * from sk_ProductSort where ParentID=" + typeid + " ";
            Comm = new OleDbCommand(sql1, Conn);
            dr = Comm.ExecuteReader();
            this.rptypelist1.DataSource = dr;
            this.rptypelist1.DataBind();
        }
    }
出现错误 无法将类型为“System.Data.DataRowView”的对象强制转换为类型“System.Data.Common.DbDataRecord”。 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.InvalidCastException: 无法将类型为“System.Data.DataRowView”的对象强制转换为类型“System.Data.Common.DbDataRecord”。源错误: 
行 218:
行 219:            Repeater rptypelist1 = e.Item.FindControl("rptypelist1") as Repeater;//找到里层的repeater对象
行 220:            DbDataRecord rowv =(DbDataRecord)e.Item.DataItem;//找到分类Repeater关联的数据项 
行 221:            int typeid = Convert.ToInt32(rowv["ID"]); //获取填充子类的id 
行 222:            string sql1 = "select * from sk_ProductSort where ParentID=" + typeid + " ";
 

解决方案 »

  1.   

       DbDataRecord rowv =(DbDataRecord)e.Item.DataItem;//找到分类Repeater关联的数据项 
                int typeid = Convert.ToInt32(rowv["ID"]); //获取填充子类的id 
     DataRowView rowv = (DataRowView)e.Item.DataItem;
     int typeid  = Convert.ToInt32(rowv["ID"]); //获取填充子类的id 
      

  2.   

    http://dotnet.ysoho.com/Members-System.Data.DataRowView.aspx以上为参考虑资料,代码如下:
    protected void rptypelist_ItemDataBound(object sender, RepeaterItemEventArgs e)
        {
            if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
            {
                Repeater rptypelist1 = e.Item.FindControl("rptypelist1") as Repeater;//找到里层的repeater对象
                int typeid =  (Int32)e.Item.DataItem.Item["ID"]; //获取填充子类的id 
                string sql1 = "select * from sk_ProductSort where ParentID=" + typeid + " ";
                Comm = new OleDbCommand(sql1, Conn);
                dr = Comm.ExecuteReader();
                this.rptypelist1.DataSource = dr;
                this.rptypelist1.DataBind();
            }
        }
    以上代码未测试.......