0

有谁知道如何将 sap ui5 控件与 asp:repeater 控件一起使用。每次我尝试放置一个按钮时,它只会出现在中继器的第一次迭代中。而不是在其余的迭代中

<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 有关系吗?需要帮助请

4

2 回答 2

1

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

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

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

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

}).placeAt("<%# Container.FindControl("Comments").ClientID %>");
于 2013-11-17T19:31:37.433 回答
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>    
于 2014-11-22T14:13:16.673 回答