Gridview图像按钮RowCommand无法在IE中工作?

时间:2014-04-03 07:38:35

标签: c# asp.net vb.net gridview

我在gridview项目模板中有图像按钮。在RowCommand中单击该图像时,事件CommandName显示的不同,那就是我所期待的。它总是说“选择”,但我期待“pdf”。

这只发生在IE中。不是Chrome。

 <asp:GridView ID="grdLoan" Width="100%" runat="server" CssClass="grid" HeaderStyle-CssClass="gridHeader"
                PageSize="25" AutoGenerateColumns="false" RowStyle-CssClass="gridItem" AlternatingRowStyle-CssClass="gridAltItem"
                AllowPaging="false" BackColor="LightGray">
                <SelectedRowStyle CssClass="SelectedRowStyle" />
                <Columns>
                    <asp:BoundField HeaderText="Loan Number" DataField="strAltLoanNumber">
                        <ItemStyle Wrap="False" />
                    </asp:BoundField>
                    <asp:BoundField HeaderText="Security" DataField="strGlobalSecurity">
                        <ItemStyle Wrap="False" />
                    </asp:BoundField>
                    <asp:BoundField HeaderText="Sample #" DataField="intSampleID"></asp:BoundField>
                    <asp:TemplateField HeaderText="PDF">
                        <ItemTemplate>
                            <asp:ImageButton CommandName="pdf" ID="imgPDF" ImageUrl="~/Images/pdf.png" runat="server"
                                CommandArgument='<%#Eval("strGlobalLoanNumber")%>' />
                        </ItemTemplate>
                    </asp:TemplateField>
                </Columns>
  </asp:GridView>

Gridview事件

Private Sub grdLoan_RowCreated(sender As Object, e As GridViewRowEventArgs) Handles grdLoan.RowCreated

    If e.Row.RowType = DataControlRowType.DataRow Then
        e.Row.Attributes("onmouseover") = "this.style.cursor='pointer';"
        e.Row.Attributes("onmouseout") = "this.style.textDecoration='none';"
        e.Row.ToolTip = "Click to select row"
        e.Row.Attributes("onclick") = Me.Page.ClientScript.GetPostBackClientHyperlink(Me.grdLoan, "Select$" & e.Row.RowIndex)
    End If
End Sub  

  Private Sub grdLoan_RowCommand(sender As Object, e As GridViewCommandEventArgs) Handles grdLoan.RowCommand
        If e.CommandName = "pdf" Then
        end if
End sub

即使我尝试了

<asp:ImageButton CommandName="pdf" ID="imgPDF" ImageUrl="~/Images/pdf.png"
 runat="server" CommandArgument='<%#Eval("strNumber")%>' OnClick="imgPDF_Click" />

Onclick事件永远不会触发,Chrome也可以正常工作。

也试过

<asp:CommandField ShowEditButton ...>

第一次RowCommand开火两次。一次Edit,另一次select。如果我第二次点击它是Select

我不明白最新情况。

3 个答案:

答案 0 :(得分:1)

我检查你的代码,但它在这里工作我正在使用IE 8及其工作。

我改变了什么:

<asp:GridView ID="grdLoan" Width="100%" runat="server" CssClass="grid" HeaderStyle-   CssClass="gridHeader" PageSize="25" AutoGenerateColumns="false"
 RowStyle-CssClass="gridItem" **onRowCommand = "grdLoan_RowCommand"** AlternatingRowStyle- CssClass="gridAltItem" AllowPaging="false" BackColor="LightGray">

并在代码页中

protected void grdLoan_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        if (e.CommandName.ToLower() == "pdf")
        {
        }
    }

我在IE 8中正确获取命令名...

答案 1 :(得分:0)

抱歉,我没有看到您有身份证件。

我认为你正在使用IE 10.

.NET 2.0和.NET 4附带的浏览器定义文件中存在一个错误,即它们包含某些浏览器版本的定义。但某些浏览器(如IE 10)的版本不再在这些范围内。因此,ASP.NET将它们视为未知浏览器,默认为低级定义,这有一些不便之处,例如它不支持JavaScript等功能。

只需安装.NET Framework 4.5即可解决此问题。

即使您不将应用程序池切换到.NET Framework 4.5,也可以解决此问题。

相关:ImageButton does not fire a post back on IE10

答案 2 :(得分:0)

请检查您的Page_Load方法并确保在IsPostback检查中绑定网格:

protected void Page_Load(object sender, EventArgs e)
{
    if(!Page.IsPostBack) // Don't forget this
    {
        grdLoan.DataSource = ...;
        grdLoan.DataBind();
    }
}