2013-01-21 53 views
0

我想要当用户点击Panel那个类session_box点击事件触发。但是当我点击它时,什么都没有发生。当我调试代码时,ItemCommand事件甚至不会被调用!中继器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); 
} 

回答

1

这是因为Panel不会引发Command事件。 Button,ImageButton,LinkBut​​ton等控件引发这个事件。

您可能需要重新考虑您的UI布局以包含某种类型的按钮以引发Command事件。

1

大编辑: 我认为,一个更简单的方法是添加的,而不是你的图像控制的的ImageButton 。这有两个属性,CommandName和CommandArgument。您可以使用它们将参数传递给后面的代码,而无需任何投射。