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

时间:2016-07-18 10:42:11

标签: asp.net sql-server-2012 datatables asprepeater

我有一个幻灯片,图片从sql server加载 这是我的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>    

现在,当我运行Project并且用户点击其中一个imageButtons时,我想了解他/她点击了什么?例如,他/她点击第二个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");

 }

1 个答案:

答案 0 :(得分:0)

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

定义命令和args:

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