我很难弄明白为什么RowCommand没有开火。奇怪的是,我的页面上有一个不同的GridView,它的RowCommand是没有问题的,所以我不知道问题会是什么。
我有以下代码:
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>代码在中的应用
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更新:
我注意到,将GridView从其中移出包含div会使RowCommand正确地触发。
我使用jQuery UI将GridView放到一个对话框中,然后按一下按钮显示。我在包含的display: none上设置了div,所以在单击按钮之前GridView是不可见的,我认为这可能是问题的根源。我在这里更新我的代码以反映这一点。
div 如何隐藏,直到按钮单击而不阻止RowCommand正确触发?
发布于 2017-01-17 21:22:32
将它从Button更改为LinkButton,它就能工作了。
<ItemTemplate>
<asp:LinkButton ID="btnSelectPayee" runat="server" CommandName="SelectPayee"
CommandArgument='<%# Eval("TaxID") %>' >Select</asp:LinkButton>
</ItemTemplate>显然,jQuery UI对话框将模态放置在</form>标记之外,因此普通按钮不再工作。但是LinkButtons使用JavaScript来执行PostBack,并且它们仍然在框架中注册。

发布于 2017-01-13 18:20:12
首先,应该将命令名分配给项目模板中的buttom,如下所示:
<ItemTemplate>
<asp:Button ID="Btn1" CssClass="SelectRow" CommandName="Sign" runat="server"
CausesValidation="false"
CommandArgument="<%# ((GridViewRow)Container).RowIndex %>"
Text="" />
</ItemTemplate>在后面的代码中
protected void gvPayees_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "Sign")
{
GridViewRow gvr = (GridViewRow)(((Button)e.CommandSource).NamingContainer);
int RowIndex = gvr.RowIndex;
gvPayees.SelectedIndex = RowIndex;
}
}https://stackoverflow.com/questions/41639331
复制相似问题