GridView RowCommand 未触发 [英] GridView RowCommand Not Firing

查看:14
本文介绍了GridView RowCommand 未触发的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我无法弄清楚为什么 RowCommand 没有触发.奇怪的是,我在页面上有一个不同的 GridView,它的 RowCommand 可以正常触发,所以我不知道可能是什么问题.

我有以下代码:

JavaScript

function displayPayees() {$('#payeeList').css("display", "block");$('#payeeList').dialog({模态:真,可拖动:假,可调整大小:假,最大高度:600,宽度:800,位置:{我的:中心顶部",在:中心顶部+15%",:窗口}});}

.aspx 页面

<div id="payeeList" title="可用收款人" style="display:none;"><asp:GridView ID="gvPayees" runat="server" Visible="true" AutoGenerateColumns="false" ShowHeaderWhenEmpty="true" Width="100%" AllowSorting="True" OnRowCommand="gvPayees_RowCommand" CssClass="table表条纹"><HeaderStyle Font-Bold="True" ForeColor="White" Height="15px" BackColor="#46596b" Wrap="False"></HeaderStyle><列><asp:BoundField DataField="TaxID" HeaderText="税务 ID"></asp:BoundField><asp:BoundField DataField="Name" HeaderText="Name"></asp:BoundField><asp:BoundField DataField="Address1" HeaderText="Address"></asp:BoundField><asp:BoundField DataField="Address2" HeaderText="Address 2"></asp:BoundField><asp:BoundField DataField="City" HeaderText="City"></asp:BoundField><asp:BoundField DataField="State" HeaderText="State"></asp:BoundField><asp:BoundField DataField="Zip" HeaderText="Zip"></asp:BoundField><asp:TemplateField HeaderText=""><ItemStyle Horizo​​ntalAlign="Center" VerticalAlign="Middle"/><项目模板><asp:Button ID="btnSelectPayee" runat="server" Text="Select" CssClass="btn btn-default home-btn btn-sm" CausesValidation="false" CommandName="SelectPayee" CommandArgument='<%# Eval("TaxID") &"~" &Eval("姓名") &"~" &Eval("Address1") &"~" &Eval("Address2") &"~" &Eval("城市") &"~" &Eval("State") &"~" &Eval("Zip") %>'/></ItemTemplate></asp:TemplateField></列></asp:GridView>

背后的代码

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) 处理 Me.Load如果不是 Page.IsPostBack 那么绑定细节()万一结束子Protected Sub gvPayees_RowCommand(ByVal sender As Object, ByVal e As GridViewCommandEventArgs)Throw New Exception("Hello?") '测试代码结束子

更新:

我注意到将 GridView 移出它包含的 div 会导致 RowCommand 正确触发.

我正在使用

I'm having trouble figuring out why the RowCommand isn't firing. Oddly enough, I have a different GridView on the page and its RowCommand is firing without issue so I have no idea what the problem could be.

I have the following code:

JavaScript

function displayPayees() {
        $('#payeeList').css("display", "block");
        $('#payeeList').dialog({
            modal: true,
            draggable: false,
            resizable: false,
            maxHeight: 600,
            width: 800,
            position: { my: "center top", at: "center top+15%", of: window }
        }); 
    }

.aspx Page

<div id="payeeList" title="Available Payees" style="display:none;">
    <asp:GridView ID="gvPayees" runat="server" Visible="true" AutoGenerateColumns="false" ShowHeaderWhenEmpty="true" Width="100%" AllowSorting="True" OnRowCommand="gvPayees_RowCommand" CssClass="table table-striped">
        <HeaderStyle Font-Bold="True" ForeColor="White" Height="15px" BackColor="#46596b" Wrap="False"></HeaderStyle>
        <Columns>
            <asp:BoundField DataField="TaxID" HeaderText="Tax ID"></asp:BoundField>
            <asp:BoundField DataField="Name" HeaderText="Name"></asp:BoundField>
            <asp:BoundField DataField="Address1" HeaderText="Address"></asp:BoundField>
            <asp:BoundField DataField="Address2" HeaderText="Address 2"></asp:BoundField>
            <asp:BoundField DataField="City" HeaderText="City"></asp:BoundField>
            <asp:BoundField DataField="State" HeaderText="State"></asp:BoundField>
            <asp:BoundField DataField="Zip" HeaderText="Zip"></asp:BoundField>
            <asp:TemplateField HeaderText="">
                <ItemStyle HorizontalAlign="Center" VerticalAlign="Middle" />
                <ItemTemplate>
                    <asp:Button ID="btnSelectPayee" runat="server" Text="Select" CssClass="btn btn-default home-btn btn-sm" CausesValidation="false" CommandName="SelectPayee" CommandArgument='<%# Eval("TaxID") & "~" & Eval("Name") & "~" & Eval("Address1") & "~" & Eval("Address2") & "~" & Eval("City") & "~" & Eval("State") & "~" & Eval("Zip") %>' />
                </ItemTemplate>
            </asp:TemplateField>
        </Columns>
    </asp:GridView>
</div>

Code Behind

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    If Not Page.IsPostBack Then
            BindDetails()
        End If
End Sub

Protected Sub gvPayees_RowCommand(ByVal sender As Object, ByVal e As GridViewCommandEventArgs)
    Throw New Exception("Hello?") 'Test code
End Sub

UPDATE:

I noticed that moving the GridView out of it's containing div causes the RowCommand to fire properly.

I'm using jQuery UI to put the GridView into a dialog box to be displayed on a button click. I have display: none on the containing div so that the GridView is invisible until the button click and I think that may be the source of my problem. I'm updating my code here to reflect that.

How can I hide the div until button click without preventing the RowCommand from firing properly?

解决方案

Change it from a Button to a LinkButton and it will work.

<ItemTemplate>
    <asp:LinkButton ID="btnSelectPayee" runat="server" CommandName="SelectPayee" 
        CommandArgument='<%# Eval("TaxID") %>' >Select</asp:LinkButton>
</ItemTemplate>

Apparently the jQuery UI dialog places the modal outside the </form> tag, so normal buttons don't work anymore. But LinkButtons use JavaScript to perform the PostBack, and they are still registered within the framework.

这篇关于GridView RowCommand 未触发的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆