【问题标题】:Repeater ItemCommand Doesnt fire中继器 ItemCommand 不触发
【发布时间】:2015-11-28 18:57:01
【问题描述】:

我尝试过发布相同主题的帖子,但没有成功。它实际上并没有触发事件

我想要什么

我想开火 ItemCommand 有人点击中继器时的事件。

问题

ItemCommand 未被触发。

EnableViewState=true

这里是代码:

HTML:

<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();
}

到目前为止我已经尝试过什么

方法一

我已经放了onItemCommand="rptthumbnail_ItemCommand"但是我没有工作。

方法二 我在OnInit() 中添加了handlar 但我也没有工作。

请一些人确定是什么问题 请帮我解决这个问题.....

【问题讨论】:

  • 我希望你想在点击按钮btnBuy时触发外部中继器控件的ItemCommand事件?但是这个按钮存在于嵌套中继器中,因此将触发该中继器的itemCommand 事件。

标签: asp.net repeater itemcommand


【解决方案1】:

因为您的按钮是内部中继器的子级,所以它将触发 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
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多