在asp.net中使用GridView的OnRowCommand

时间:2012-03-07 15:52:15

标签: asp.net gridview rowcommand

我创建了一个Web应用程序,其中我使用了onrowcommand并在代码后面创建了处理程序,现在我在emptytemplate中有一个按钮,每当我点击按钮时,我的onRowCommand都没有被执行。以下是我的代码。

<asp:GridView ID="grdExternalLinkSection1" runat="server" Width="100%" AutoGenerateColumns="false" CellPadding="5" OnRowCommand="grdExternalLinkSection_RowCommand">
                                <EmptyDataTemplate>
                                    External Link Title
                                    <asp:TextBox ID="txtExternalLinkTitleEmptySection1" runat="server"></asp:TextBox>
                                    External Link Url
                                    <asp:TextBox ID="txtExternalLinkUrlEmptySection1" runat="server"></asp:TextBox>
                                    <asp:Button ID="btnExternalLinkEmptySection1" runat="server" Text="Add" CommandArgument="1" CommandName="headernew" style="padding:3px; width:56px;" />
                                </EmptyDataTemplate>
</asp:GridView>

还有更多字段,但这就是我所说的。这是我在RowCommand事件处理程序后面的代码。

protected void grdExternalLinkSection_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        Response.Write("welcome");
    }

它永远不会占用处理程序,下面是我的页面指令:

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="NewsletterASPVersion.ascx.cs" Inherits="RWO_Controls_NewsletterASPVersion" %>
这工作一次,此后从未工作过。有没有人知道造成这种情况的原因。

1 个答案:

答案 0 :(得分:4)

您可能陷入两种陷阱:

  1. 您在每次回发时都将GridView重新绑定到它的DataSource。 所以请经常检查:

    if(!IsPostBack)BindGrid();
    
  2. 当DataSource为空时,您没有调用grdExternalLinkSection1.DataBind()
  3. 但是你根本看不到EmptyDataTemplate。所以我猜你已陷入第一个陷阱。