2016-07-18 31 views
1

イメージがSQL Serverからロードされるスライドショーがあります。ここ
は私のhtmlコードは次のとおりです。私はimageButtonsの1にプロジェクトとユーザーのクリックを実行すると、
リピータで選択された行を理解する方法は?

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

今、私は彼/彼女がクリックされたかを理解したいですか?例えば、彼/彼女が2番目の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"); 

} 

答えて

0

画像自体をクリックしを処理しながら、そうするための簡単な方法はありません。ただし、リピーターイベントの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 
    } 
} 
関連する問題