中继器绑定两个表

时间:2014-04-29 07:05:20

标签: c# asp.net

我正在开发一个asp.net项目。我使用了两个嵌套的中继器来显示状态和对该状态的评论。嵌套转发器绑定到具有两个表的数据源。现在当我#Eval第二个表的列值时,它显示不包含属性名称错误。

  <ItemTemplate>

        <div  style="height:285px;">
        <img src='ProfilePic/<%#Eval("ProfilePic")%>' width="100" height="100" alt="" />
        <asp:LinkButton ID="lnkfrndname" OnClick="lnkfrndname_Click" CommandName="frndname" CommandArgument='<%#Eval("UserName") %>' runat="server"> <u><%#Eval("Firstname")%> <%#Eval("LastName")%></u></asp:LinkButton>
        <br />
        <%#Eval("StatusText")%>
        <br />

        <asp:HiddenField ID="hfstatusid" Value='<%# Eval("StatusId") %>' runat="<asp:Repeater ID="replike" runat="server">
            < <asp:Literal ID="ltlstatuscomm" Text='<%#Eval("CommentText") %>' runat="server"></asp:Literal>

        </ItemTemplate>
        </ </ItemTemplate>
</asp:Repeater>

的.cs

protected void rephomecontent_ItemDataBound(object sender, RepeaterItemEventArgs e)
    {
        if ((e.Item.ItemType == ListItemType.Item) || (e.Item.ItemType == ListItemType.AlternatingItem))
        {
            HiddenField hf = e.Item.FindControl("hfstatusid") as HiddenField;

        if (hf != null)
        {
            Repeater rep = e.Item.FindControl("replike") as Repeater;

            if (rep != null)
            {


                int statusid = int.Parse(hf.Value.ToString());
                DataSet ds = new StatusLikeInfoAction().ViewStatusLike(statusid);
                rep.DataSource = ds;
                rep.DataBind();
             }
          }
        }
       }

1 个答案:

答案 0 :(得分:0)

如果您使用Datatable绑定转发器而不是包含多个表的DataSet,那就很好了。

首先分析是否要绑定

  

ds.Tables [0]

  

ds.Tables [1]

然后按如下方式绑定转发器

rep.DataSource = ds.Tables[0];

rep.DataSource = ds.Tables[1];

根据您的选择