有没有人知道如何在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有关吗?需要帮助
答案 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>