带有ASP的SAP UI5:Repeater Control

时间:2013-11-17 19:02:52

标签: c# asp.net .net sapui5

有没有人知道如何在asp:repeater控件中使用sap ui5控件。每次我尝试按下按钮时,它只会出现在转发器的第一次迭代中。而不是在其余的迭代中

<asp:Repeater ID="NewsFeedID" runat="server" >
<ItemTemplate>

                <script type="text/javascript">
                    var buttonlink = CommentsPage + "?news=" + '<%# Eval("NewsFeedID") %>';
                    var AddComment = new sap.ui.commons.Button({
                        text: "Add Comment",
                        icon: AddCommentIcon,
                        lite: true,
                        press: function () { window.location = buttonlink;  }
                    }).placeAt("Comments");

                </script>
                <div id="Comments"></div>
            </td>
    </tr>

  

当我使用这段代码时,它只显示asp:repeater的第一次迭代,但我想让它显示所有迭代。它与div id = Comments有关吗?需要帮助

2 个答案:

答案 0 :(得分:1)

您的Repeater会使用相同的<div>创建多个id个元素,这会导致冲突。

解决问题的一种方法是向runat="server"添加<div>属性,使其成为服务器端控件,以便ASP.NET为每个实例生成唯一ID:

<div runat="server" id="Comments"></div>

然后将动态生成的ID传递给placeAt函数:

}).placeAt("<%# Container.FindControl("Comments").ClientID %>");

答案 1 :(得分:0)

您可以使用转发器项目索引重命名每个实例:

<script type="text/javascript">
                var buttonlink = CommentsPage + "?news=" + '<%# Eval("NewsFeedID") %>';
                var AddComment = new sap.ui.commons.Button({
                    text: "Add Comment",
                    icon: AddCommentIcon,
                    lite: true,
                    press: function () { window.location = buttonlink;  }
                }).placeAt("<%# "Comments"+ Container.ItemIndex+1 %>");

            </script>
            <div id="<%# "Comments"+ Container.ItemIndex+1 %>"></div>