![](/img/trans.png)
[英]ItemCommand not firing on first click in Repeater or GridView
[英]Repeater ItemCommand event not firing
我希望當用戶單擊具有session_box
類的Panel
,觸發單擊事件。 但是當我單擊它時,什么也沒有發生。 當我調試代碼時, ItemCommand
事件甚至都沒有被調用!
這是我的代碼:
HTML:
<div id="sessions_wrapper">
<asp:Repeater ID="sessions_repeater" runat="server"
DataSourceID="SqlDataSource1"
onitemcommand="sessions_repeater_ItemCommand">
<ItemTemplate>
<asp:Panel CssClass="session_box" runat="server" data-session-id='<%# Eval("session_id") %>'>
<asp:Image CssClass="session_icon" runat="server" ImageUrl='<%# Eval("session_cover") %>' alt="" />
<div class="session_info">
<p>Title: <%# Eval("session_name") %></p>
<p>Date: <%# Eval("session_date") %></p>
<p>Photos: <%# Eval("session_photos") %></p>
</div>
</asp:Panel>
</ItemTemplate>
</asp:Repeater>
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:DBCS %>"
ProviderName="<%$ ConnectionStrings:DBCS.ProviderName %>"
SelectCommand="SELECT * FROM [sessions]"></asp:SqlDataSource>
</div>
C# :
protected void sessions_repeater_ItemCommand(object source, RepeaterCommandEventArgs e)
{
string sid = ((Panel)e.CommandSource).Attributes["data-session-id"];
Response.Redirect("sessions.aspx?sid=" + sid);
}
大編輯:我認為一種更簡單的方法是添加一個ImageButton而不是您的Image控件。 它具有兩個屬性,CommandName和CommandArgument。 您可以使用這些參數將參數傳遞給后面的代碼,而無需進行任何強制轉換。
這是因為面板不引發Command事件。 Button,ImageButton,LinkButton等控件引發此事件。
您可能需要重新考慮UI布局,以包括某種引發Command事件的按鈕。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.