【问题标题】:Repeater Linkbutton Onclick not firing中继器链接按钮 Onclick 未触发
【发布时间】:2016-04-06 18:05:20
【问题描述】:

我遇到了 LinkBut​​ton onclick 事件未触发的问题。

我已经检查了以下帖子并采取了回发的预防措施但仍然很高兴

repeater linkbutton not firing

Repeater's Item command event is not firing on linkbutton click

这是我目前的代码

<asp:PlaceHolder runat="server" ID="phOrders">
<asp:Repeater ID="rprOrders" runat="server" OnItemCommand="rprOrders_ItemCommand">
  <HeaderTemplate>
    <table>
      <tr>
        <th>
          <asp:LinkButton ID="lnkOrderByDate" runat="server" Text="Date" CommandName="OrderDate" OnClick="lnkOrderByDate_Click"></asp:LinkButton></th>
        <th>
          <asp:LinkButton ID="lnkOrderByOrderNumber" runat="server" Text="Order Number"></asp:LinkButton></th>
        <th>
          <asp:LinkButton ID="lnkOrderByProductNumber" runat="server" Text="Product Number"></asp:LinkButton></th>
        <th>Product Description</th>
        <th>Size</th>
        <th>QTY</th>
        <th>Status</th>
      </tr>
  </HeaderTemplate>
  <ItemTemplate>
    <tr>
      <td><strong><%# Eval("OrderDate") %></strong></td>
      <td><%# Eval("OrderNumber") %></td>
      <td><%# Eval("SKUNumber") %></td>
      <td><%# Eval("OrderItemSKUName") %></td>
      <td><%# Eval("mtrx_Code2") %></td>
      <td><%# Eval("OrderItemUnitCount") %></td>
      <td><strong><%# Eval("OrderItemStatus") %></strong></td>
    </tr>
  </ItemTemplate>
  <FooterTemplate>
    </table>
  </FooterTemplate>
</asp:Repeater>
<div class="track-footer"></div>
</asp:PlaceHolder>

代码背后

protected void SetupControl()
{
  if (this.StopProcessing)
  {
    // Do not process
  }
  else
  {
    if (CMSContext.ViewMode == ViewModeEnum.LiveSite)
    {      
      if(!Page.IsPostBack)
      {            
        PopulateProductClass();
        PopulateProduct();
        PopulateDefaultViewOrders();
      }
    }
  }
}

protected void lnkOrderByDate_Click(object sender, EventArgs e)
{
  //Do Something
}

有什么建议吗?看不懂?

即使OnItemCommand="rprOrders_ItemCommand" 也不会触发?

【问题讨论】:

    标签: c# asp.net kentico


    【解决方案1】:

    DataControl 中的LinkButton 触发方法rprOrders_ItemCommand

    在那里设置断点。如果您有多个LinkButton,那么您可以阅读CommandName="OrderDate" Codebehind:(e.CommandName)

    对于传递值,应该使用CommandArgument

    【讨论】:

    • 您好,感谢您的回复,我按照建议设置了一个断点,但是 Item 命令 rprOrders_ItemCommand 也没有触发。 :(
    【解决方案2】:

    使用类似的东西

    <asp:Repeater ID="Repeater1" runat="server">
    <ItemTemplate>
        <asp:LinkButton ID="LinkButton1" runat="server" OnCommand="LinkButton1_Command" CommandName="MyUpdate" CommandArgument='<%# Eval("erid") %>'>LinkButton</asp:LinkButton>
    </ItemTemplate>
    

    .cs

        protected void Repeater1_OnItemCommand(object source, RepeaterCommandEventArgs e)
     {
        if (e.CommandName.Equals("MyUpdate"))
        {
            // some code
        }
    
        if (e.CommandName.Equals("EditCategory"))
        {
            // some code
        }
    }
    

    【讨论】:

    • 尝试了上述方法,仍然没有触发事件:(
    • 确保不要在每次回发时重新绑定转发器
    • 优秀发现了这个问题。我在回发时重新绑定中继器。方法PopulateDefaultViewOrders() 包含将数据绑定到转发器的代码。因此,一旦我在if(!Page.IsPostBack) { } 之外使用该方法,ItemCommand 就会被触发。
    • 我需要在if(!Page.IsPostBack){ }里面绑定转发器吗?
    • 在页面加载中绑定它,然后在你调用项目的命令之后。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-18
    相关资源
    最近更新 更多