2015-11-28 3 views
0

Я пробовал сообщение на том же тему, но не работал. это на самом деле не срабатывают событиеRepeater ItemCommand Не работает

То, что я хочу

Я хочу стрелять ItemCommand событие, когда некоторые один щелчок на ретранслятор.

Выпуск

The ItemCommand не увольняют.

EnableViewState=true 

Вот по коду:

сайтов:

<table> 
       <asp:Repeater ID="outerRepeater" runat="server" 
        OnItemDataBound="outer_OnitemdataBound" 
        onitemcommand="outerRepeater_ItemCommand"> 
       <ItemTemplate> 
       <asp:Repeater ID="Rgallery" runat="server"> 
        <ItemTemplate> 
         <%# (Container.ItemIndex + 4) % 4 == 0 ? "<tr>" : string.Empty %> 
         <td> 
          <img src="<%# Eval("ImgPath") %>" style="height:300px; width:300px;" alt="" /> 
           <div class="caption"> 
         <h3><%# Eval("Type") %></h3> 
         <p><b><%# Eval("SubType") %></b></p> 
         <p{font-family: "Comic Sans MS", cursive, sans-serif; font-size: 25px}>Price:<i class="fa fa-inr fa-fw"><%# Eval("Price") %></i></p> 
         <p><asp:Button ID="btnBuy" CommandName="Buy" CommandArgument="Add to Cart" class="btn btn-primary" Text='<%# DataBinder.Eval(Container.DataItem, "Price") %>' runat="server" /> 
         </p> 
         </div> 
         </td> 
         <%# (Container.ItemIndex + 4) % 4 == 3 ? "</tr>" : string.Empty%> 
        </ItemTemplate> 
       </asp:Repeater> 
       </ItemTemplate> 
       </asp:Repeater> 
       <asp:Label ID="lblStatus" runat="server" ></asp:Label> 
    </table> 

и вот код позади

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!this.IsPostBack) 
    { 
     DataTable dummy = new DataTable(); 
     dummy.Columns.Add(); 
     dummy.Rows.Add(); 
     rptMain.DataSource = dummy; 
     rptMain.DataBind(); 
     outerRepeater.DataSource = dummy; 
     outerRepeater.DataBind(); 
    } 
    if (Page.IsPostBack) 
    { return; } 

} 

protected void outerRepeater_ItemCommand(object source, RepeaterCommandEventArgs e) 
{ 
    // Here is a code I want to fire 
} 
protected void outer_OnitemdataBound(object sender, RepeaterItemEventArgs e) 
{ 
    Repeater repeater = e.Item.FindControl("RGallery") as Repeater; 
    repeater.DataSource = db.GetTable("SELECT `Did`, `Type`, `SubType`, `Gender`, `Price`, `ImgPath` FROM `designs` ORDER BY `Did` DESC"); 
    repeater.DataBind(); 
} 

Что я пытался до сих пор

Метод 1

Я поставил onItemCommand="rptthumbnail_ItemCommand" Но я не работал.

Метод 2 У меня есть ручной работы в OnInit() Но я тоже не работал.

Может кто-нибудь, пожалуйста, определить, что проблема Пожалуйста, помогите мне с этим .....

+0

Я надеюсь, что вы хотите, чтобы вызвать 'ItemCommand' событие внешнего управления ретранслятором, когда кнопка' btnBuy' нажата? Но эта кнопка присутствует внутри вложенного ретранслятора, поэтому произойдет событие 'itemCommand' этого ретранслятора. –

ответ

0

Потому что ваша кнопка ребенок вашего внутреннего ретранслятора, это вызовет ItemCommand событие на том, что вместо этого. Перемещение привязки события к этому ретранслятору должно исправить его для вас.

<asp:Repeater ID="outerRepeater" runat="server" 
    OnItemDataBound="outer_OnitemdataBound"> 
    <ItemTemplate> 
     <asp:Repeater ID="Rgallery" runat="server" 
      OnItemCommand="Rgallery_ItemCommand"> 
protected void Rgallery_ItemCommand(object source, RepeaterCommandEventArgs e) 
{ 
    // Here is a code I want to fire 
} 
+0

Благодарим вас за помощь –

 Смежные вопросы

  • Нет связанных вопросов^_^