【问题标题】:ItemCommand in Listview not firing in the usercontrolListview 中的 ItemCommand 未在用户控件中触发
【发布时间】:2011-09-22 00:28:39
【问题描述】:

我有用户控件,它在项目模板中有链接按钮,我试图在后面的代码中捕获 Itemcommand 事件,但该事件没有被触发。

我已经解决了其他类似的问题,但它对我没有帮助。下面是我的代码 sn-p,有人可以帮我吗?

列表视图-

<asp:ListView runat="server" ID="lvTherapeuticAlternatives" OnItemCommand="TherapeuticAlternatives_OnItemCommand">

ItemTemplate-

<ItemTemplate>
            <tr class='data'>
                <td style="width:210px;">
                    <asp:LinkButton  ID="lnkMedSelection"  runat="server" CommandName="SelectedMed"  CommandArgument='<%#Eval("NDC") & ", " & Eval("DrugGenericProductID") %>' >
                    <asp:Label ID="lblDrugName" runat="server"  Text='<%# Eval("DrugDescription") %>' /> 
                    </asp:LinkButton >
                </td>
                <td style="width:70px;" align="center">
                    <asp:Label ID="lblBrandGeneric" runat="server" Text='<%# Eval("descBrandGeneric") %>' /> 
                </td>
                <td style="width:110px;" align="center">
                    <asp:Label ID="lblStatus" runat="server" Text='<%# Eval("FormularyStatusDescription") %>' /> 
                </td>
                <td style="width:210px;" align="left">
                    <asp:Label ID="lblFlat" runat="server" Text='<%# Eval("CopayInfo") %>' /> 
                </td>
            </tr>
         </ItemTemplate>  

代码隐藏-

    Protected Sub TherapeuticAlternatives_OnItemCommand(ByVal sender As Object, ByVal e As ListViewCommandEventArgs) Handles lvTherapeuticAlternatives.ItemCommand

    End Sub

【问题讨论】:

    标签: c# asp.net


    【解决方案1】:

    Item 命令没有触发,这是因为我在页面加载事件中进行了 ISPostback 检查,因此它拒绝事件处理程序调用为 ItemCommand 事件注册的方法。

    当我删除 web 控件中的 IsPostback 检查时,该事件被触发。

    【讨论】:

      【解决方案2】:

      From MSDN:

      当单击 ListView 控件中的按钮时会引发 ItemCommand 事件。这使您可以在此事件发生时执行自定义例程。

      而且您的 ListView 上没有任何可能引发 PostBack 的按钮或任何其他类型的控件;因此,您的 ItemCommand 处理程序永远不会被引发。

      更新

      如果您这样声明您的 LinkBut​​ton(只注意 OnClick 事件):

      <asp:LinkButton  ID="lnkMedSelection"  OnClick="lnkMedSelection_Click" runat="server" CommandName="SelectedMed"  CommandArgument='<%#Eval("NDC") & ", " & Eval("DrugGenericProductID") %>' >
      

      然后你在后面添加你的代码:

        Protected Sub lnkMedSelection_Click(sender As Object, e As EventArgs)
              ' Do something here  for example:
               Label2.Text = "Linked button clicked"
          End Sub
      
      
      
      Protected Sub TherapeuticAlternatives_OnItemCommand(ByVal sender As Object, ByVal e As ListViewCommandEventArgs) Handles lvTherapeuticAlternatives.ItemCommand
          'Notice how this event is also raised. 
          ' You can put a break point or simply test with a label as so:
           Label1.Text = "ItemCommand Fired"
      End Sub
      

      【讨论】:

      • 我在列表视图控件中有链接按钮。这是 - asp:LinkBut​​ton ID="lnkMedSelection" runat="server" CommandName="SelectedMed" CommandArgument=''
      • @Senthil 没问题,但这对您有帮助吗?您了解触发该事件需要做什么吗?
      • @Senthil 你有,但是那个按钮没有“OnClick”事件,只有一个CommandArgumentCommandName定义
      • 谢谢 lcarus,所以我需要为 OnClick 添加一个处理程序吗?你能给我更多的意见吗?
      • @Senthil 我刚刚更新了我的答案。看一看。这就是你需要做的。我自己测试了代码,它可以工作。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-18
      • 1970-01-01
      • 2012-03-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多