如何理解转发器中选择了哪些行?

how to understand which rows selected in repeater?

我有一张图片从 sql 服务器加载的幻灯片。
这是我的 html 代码:

                <!-- Elastislide Carousel -->
                <ul id="Ul1" class="elastislide-list">
                    <asp:Repeater ID="Repeater2" runat="server">
                        <ItemTemplate>
                    <li>

                         <asp:Label ID="lbl" runat="server" Text='<%#Eval("IDMusic") %>' Visible="True"></asp:Label>
                            <asp:ImageButton ID="ImageButton1" runat="server"  ImageUrl='<%#Eval("ImageUrl") %>' Width="250px" Height="250px" OnClick="ImageButton1_Click" />&nbsp;&nbsp;

                    </li>
                        </ItemTemplate>
                     </asp:Repeater>
                </ul>
                <!-- End Elastislide Carousel -->
            <br /><br />

        </div>
    </div>    

现在,我 运行 项目和用户单击其中一个图像按钮,我想了解 he/she 单击了什么?例如 he/she 单击第二个 ImageButton,然后我想将 IDMusic 保存到会话中并在另一个页面中使用此会话,但我不知道如何让 IDmusic 用户点击?
这是我的代码:

    protected void ImageButton1_Click(object sender, ImageClickEventArgs e)
 {
     foreach (RepeaterItem item in Repeater2.Items)
     {

         Label lbl = (Label)item.FindControl("lbl");
         if (lbl != null)
         {
             Session["selectedmusicID"] = lbl.Text;
         }
     }

     Response.Redirect("music.aspx");

 }

在处理对图像本身的点击时,没有简单的方法可以做到这一点。但是,您可以在此处利用 ItemCommand 事件,这是一个转发器事件。基本上,当在中继器内单击某些控件时,它会在中继器中生成一个您可以处理的命令,并且您可以为它提供特定于项目的参数。

定义命令和参数:

<asp:ImageButton ID="ImageButton1" ... CommandName="Select" CommandArgument='<%#Eval("IDMusic") %>' />

这里的命令名是自定义的,随便选吧。现在订阅转发器的事件:

<asp:Repeater ID="Repeater2" runat="server"
    OnItemCommand="Repeater2_ItemCommand">

并处理:

protected void Repeater2_ItemCommand(object source, RepeaterCommandEventArgs e)
{
    if (e.CommandName == "Select") //just in case you have more than one
    {
        e.CommandArgument //here is your ID
    }
}