我在Repeater中有几个LinkButtons。当我手动点击它们时,它们可以很好地进行回发。我试图通过javascript单击LinkButton失败了,我现在已经没有想法了(Google也是如此,似乎找不到任何其他选项)。我试图在OnClick和OnCommand之间交替。
了LinkButton:
<asp:Repeater ID="repItems" runat="server" OnItemDataBound="repItems_OnItemDataBound">
<ItemTemplate>
<asp:Panel ID="pnlItem" runat="server">
<asp:LinkButton ID="lnkItem" runat="server" OnClick="lnkItem_OnClick" OnCommand="lnkItem_OnCommand"></asp:LinkButton>
</asp:Panel>
</ItemTemplate>
</asp:Repeater>
使用Javascript:
eval(LinkButton.attr('href'); //Causes Sys.ParameterCountException
LinkButton.click(); //Nothing happens (no click event on LinkButton)
LinkButton.trigger('click'); //Same as LinkButton.click()
如果我设置OnClientClick进行回发,则click()函数开始工作,但我再次收到Sys.ParameterCountException错误:
lnkItem.OnClientClick = String.Format("__doPostBack('{0}', '');", lnkItem.UniqueID);
有些人建议将ScriptManager更改为发布模式,但是没有触发回发,它只是删除了错误消息。
eval(LinkButton.attr('href');
适用于Google Chrome。
答案 0 :(得分:0)
我不确定您遇到了什么问题,但以下内容适用于我。
ASCX:
<asp:Repeater ID="repItems" runat="server">
<ItemTemplate>
<asp:Panel ID="pnlItem" runat="server">
<asp:LinkButton ID="lnkItem" runat="server" Text='<%# Eval("Text") %>' OnClick="lnkItem_OnClick" OnCommand="lnkItem_OnCommand"></asp:LinkButton>
</asp:Panel>
</ItemTemplate>
</asp:Repeater>
<button onclick="document.getElementById('MainContent_repItems_lnkItem_0').click(); return false;">Huzzah!</button>
代码隐藏:
protected void Page_Load(object sender, EventArgs e)
{
List<Item> test = new List<Item>();
test.Add(new Item { Text = "Item 1" } );
test.Add(new Item { Text = "Item 2" } );
repItems.DataSource = test;
repItems.DataBind();
}
protected void lnkItem_OnClick(object sender, EventArgs e)
{
this.Controls.Add(new Literal() { Text = ((LinkButton)sender).Text });
}
protected void lnkItem_OnCommand(object sender, EventArgs e)
{
this.Controls.Add(new Literal() { Text = ((LinkButton)sender).Text });
}
在此示例中,OnClick和OnCommand都会触发。