ListView itemcommand事件在IE8中不起作用

时间:2011-08-26 09:56:43

标签: c# .net asp.net

<asp:ListView ID="lsvLanguage" runat="server"
  ItemPlaceholderID="itmHolder"
  OnItemCommand="lsvLanguage_ItemCommand">
  <LayoutTemplate>
    <asp:PlaceHolder ID="itmHolder" runat="server">
    </asp:PlaceHolder>
  </LayoutTemplate>
  <ItemTemplate>
    <div class="form_fields" style="width: 3%; padding-top: 0;">
      <asp:LinkButton ID="lbtnCommand" runat="server"
        CommandName="Language">
        <asp:CheckBox ID="chkLanguage" CssClass="styled"
          Checked='<%#Eval("IS_DEFAULT") %>'
          runat="server" />
      </asp:LinkButton>
    </div>
    <div class="form_fields" style="width: 10%;">
      <asp:Label ID="lblDetailId" Visible="false" runat="server"
        Text='<%#Eval("PARAM_DETAIL_ID") %>'>
      </asp:Label>
      <asp:Label ID="lblLanguage" runat="server"
        Text='<%#Eval("PARAM_VALUE") %>'>
      </asp:Label>
      <asp:Label ID="lblLanguageKey" runat="server"
        Text='<%#Eval("PARAM_KEY") %>' Visible="false">
      </asp:Label>
    </div>
  </ItemTemplate>
</asp:ListView>

我有上面的list控件和itemcommand事件。它在Firefox和Chrome中运行良好,但在Internet Explorer 8中运行良好。

1 个答案:

答案 0 :(得分:0)

在进入我的回答之前,我想知道你为什么要在LinkBut​​ton中嵌入CheckBox?这可能是你问题的一部分。

至于手头的实际问题,由于LinkBut​​ton正在触发命令,您应该只需将OnCommand事件处理程序直接添加到LinkBut​​ton即可。如果需要行索引,请将其作为commadn参数传递,如下所示:

<asp:LinkButton ID="LinkButton1" runat="server" CommandName="Language" CommandArgument='<%#Container.ItemIndex%>' OnCommand="LinkButton1_Command" ...>

然后在你的代码背后:

protected void LinkButton1_Command(object sender, CommandEventArgs e)
{
    GridViewRow row = GridView1.Rows[(int)e.CommandArgument];
    if (row != null)
    {
        //do some logic on the row
    }

    //do some other logic outside of the row
}