美好的一天,
我有一个包含链接按钮的转发器。链接按钮的值和数量是基于数据库中的数据拉取生成的。 HTML代码如下:
<asp:Repeater ID="repCategories" runat="server" EnableViewState="false">
<ItemTemplate>
<a href="<asp:Literal ID="litLink2" runat="server"></a>
</ItemTemplate>
</asp:Repeater>
以下是我尝试在我的代码中执行的一些代码,
for (int i = 0; i < table.Rows.Count; i++)
{
RepeaterItem itm = repCategories.Items[i];
GiftRow dr = tbl.GetRow(i);
Literal litLink2 = (Literal)itm.FindControl("litLink2");
litLink2.Text = dr.Name;
string myScript = string.Empty;
myScript = "\n<script type=\"text/javascript\" language=\"Javascript\" id=\"EventScriptBlock\">\n";
myScript += "alert('hi');";
myScript += "\n\n </script>";
Page.ClientScript.RegisterStartupScript(this.GetType(), "myKey", myScript, false);
}
通过执行此操作,我将在加载页面时收到警报hi
。我想要做的是,我只希望当我点击链接按钮时,它会发出警报hi
,而不是页面加载。
答案 0 :(得分:0)
使用LinkButton
并改为使用ClientClick
事件:
<asp:Repeater ID="repCategories" runat="server" EnableViewState="false">
<ItemTemplate>
<asp:LinkButton ID="lbMyLinkButton" runat="server" />
</ItemTemplate>
</asp:Repeater>
我还建议您尽可能使用ItemDataBound
转发器事件:
void repCategories_ItemDataBound(Object Sender, RepeaterItemEventArgs e) {
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) {
((LinkButton)e.Item.FindControl("lbMyLinkButton")).OnClientClick = "alert('hi');";
}
}
注意:
ItemDataBound
处理程序:repCategories.OnItemDataBound += repCategories_ItemDataBound