我创建了一个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" %>
这工作一次,此后从未工作过。有没有人知道造成这种情况的原因。
答案 0 :(得分:4)
您可能陷入两种陷阱:
您在每次回发时都将GridView重新绑定到它的DataSource。 所以请经常检查:
if(!IsPostBack)BindGrid();
grdExternalLinkSection1.DataBind()
但是你根本看不到EmptyDataTemplate
。所以我猜你已陷入第一个陷阱。