【问题标题】:Binding nested datalist in ASP.NET在 ASP.NET 中绑定嵌套数据列表
【发布时间】:2016-04-16 04:00:40
【问题描述】:

我有嵌套的数据列表。父数据列表显示答案,子数据列表显示特定答案的 cmets。假设有 2 个答案,第一个答案有 2 个 cmets “hi”,“Hello”,第二个答案有 1 个评论“Welcome”。然后它应该显示如下:

示例:

回答 1

你好


答案 2
欢迎


但它显示如下:

回答 1

你好

你好

回答 2
欢迎
欢迎


下面是ASPX和C#的代码


ASPX:

<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
    <ContentTemplate>
        <asp:DataList ID="dlAnswers" runat="server" RepeatColumns="1" RepeatDirection="Vertical" OnItemCommand="Datalist_Answer" DataKeyField="Aid" OnItemDataBound="dlAnswers_ItemDataBound">
            <ItemTemplate>
                <div class="comment-body comment-body-answered clearfix">
                    <div class="avatar">
                        <asp:Image ID="ProfileImg" runat="server" ImageUrl='<%#Eval("ProfileImg") %>' />
                    </div>
                    <div class="comment-text">
                        <div class="author clearfix">
                            <div class="comment-meta">
                                <span>Author :<a href="#">
                                    <%#Eval("FirstName")+" "+Eval("LastName") %></a></span>
                                <div class="date">
                                    <i class="icon-time"></i>Posted on:
                                    <%#Eval("AnsDate") %></div>
                                <a class="button small green-button" href="#" style="float: right; padding: 5px 15px; margin-left: 300px; text-align: center; width: 130px; font-size: 12px; margin-top: -20px">Accept Solution</a>
                            </div>
                        </div>
                        <br />
                        <div class="clearfix">
                        </div>
                        <div class="text">
                            <asp:Label ID="lblAnswer" runat="server" Text='<%#Eval("Description")%>'></asp:Label>
                        </div>
                        <br />
                        <div id="AnsCommentBox" class="question-answered question-answered-done">
                            <asp:DataList ID="dlAnswerComment" runat="server" RepeatDirection="Vertical">
                                <ItemTemplate>
                                    <ul class="children">
                                        <li class="comment">
                                            <div class="comment-body clearfix">
                                                <div class="comment-text">
                                                    <div class="author clearfix">
                                                        <div class="comment-author">
                                                            <a href="#">
                                                                <%#Eval("FirstName")+" "+ Eval("LastName") %></a></div>
                                                        <div class="comment-meta">
                                                            <div class="date">
                                                                <i class="icon-time"></i>
                                                                <%#Eval("AnsCDate") %></div>
                                                        </div>
                                                    </div>
                                                    <div class="text">
                                                        <p>
                                                            <asp:Label ID="lblAnsComment" runat="server" Text='<%#Eval("AnsComments")%>'></asp:Label></p>
                                                    </div>
                                                </div>
                                            </div>
                                        </li>
                                    </ul>
                                </ItemTemplate>
                            </asp:DataList>
                            <asp:Button ID="btnComment" runat="server" Text="Have a Comment?" CssClass="button small blue-button" CommandName="GenerateCommentBox" />
                            <asp:Panel ID="PlComment" runat="server" Visible="false">
                                <asp:TextBox ID="txtAnswerComment" runat="server" TextMode="MultiLine" CssClass="noresize"></asp:TextBox>
                                <asp:Button ID="btnSumbit" runat="server" CssClass="button small blue-button" Text="Submit" Font-Size="12px" CommandName="SubmitComment" />
                                <asp:Button ID="btnCancel" runat="server" CssClass="button small red-button" Text="Cancel" Font-Size="12px" CommandName="CancelButton" />
                            </asp:Panel>
                        </div>
                    </div>
                </div>
                <hr />
            </ItemTemplate>
        </asp:DataList>
    </ContentTemplate>
</asp:UpdatePanel>

C#

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        LoadAnswers();
    }
}

private void LoadAnswers()
{
    li.QuestionID = Convert.ToInt32(Request.QueryString["qid"]);

    dlSingleQuestion.DataSource = li.Get_Question_By_Id(li);
    dlSingleQuestion.DataBind();

    dlAnswers.DataSource = li.Get_All_Answers(li);
    dlAnswers.DataBind();
}

protected void dlAnswers_ItemDataBound(object sender, DataListItemEventArgs e)
{
    DataList dl = (DataList)e.Item.FindControl("dlAnswerComment");
    li.AnswerID = Convert.ToInt32(dlAnswers.DataKeys[e.Item.ItemIndex].ToString());
    dl.DataSource = li.Get_All_Answer_Comment(li);
    dl.DataBind();
}

【问题讨论】:

    标签: c# asp.net


    【解决方案1】:

    我解决了。上面的代码是正确的,问题出在 SELECT 查询中。因为我没有匹配用户的注册 ID。之后,记录显示正确。

    【讨论】:

      猜你喜欢
      • 2016-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-30
      • 2014-01-10
      • 2014-07-10
      相关资源
      最近更新 更多