2013-01-21 3 views
0

Я хочу, когда пользователь нажимает на Panel, у которого есть класс session_box пожар события щелчка. Но когда я нажимаю на него, ничего не происходит. Когда я отлаживаю код, событие ItemCommand даже не вызвано!Repeater ItemCommand event not firing

Вот мой код:

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); 
} 

ответ

1

Это потому, что панель не вызывает событие Command. Элементы управления, такие как Button, ImageButton, LinkButton и т. Д., Вызывают это событие.

Возможно, вам потребуется переосмыслить свой макет интерфейса, чтобы включить кнопку какого-либо типа, чтобы поднять событие Command.

1

Big Edit: Я думаю, что проще всего было бы добавить ImageButton вместо элемента управления Image , У этого есть два свойства: CommandName и CommandArgument. Вы можете использовать те, которые передают параметры коду без кастинга.