更新按钮触发编辑事件处理程序。

3

我有一个Gridview。标记如下...

<asp:GridView ID="gvwServers" runat="server" class="gvwServers"  
AutoGenerateColumns="false"  OnRowEditing="gvwServers_Edit" 
onrowcancelingedit="gvwServers_Cancelling" onrowdeleting="gvwServers_Deleting" 
onrowupdated="gvwServers_Updated" onrowupdating="gvwServers_Updating"
AutoGenerateEditButton=true AutoGenerateDeleteButton=true>

  <columns>
    <asp:CommandField ButtonType="Button" EditText="Edit" ShowEditButton="true" />
    <asp:CommandField ButtonType="Button" EditText="Delete" ShowDeleteButton="true" />

    ...Bound fields and template fields etc...

我的 Code-behind 有这个...

protected void gvwServers_Edit(object sender, GridViewEditEventArgs e)
{
    gvwServers.EditIndex = e.NewEditIndex;
    gvwServers.DataBind();
}
protected void gvwServers_Updated(object sender, GridViewUpdatedEventArgs e)
{
    gvwServers.DataBind();
}

protected void gvwServers_Updating(object sender, GridViewUpdateEventArgs e)
{
    gvwServers.DataBind();
}
protected void gvwServers_Deleting(object sender, GridViewDeleteEventArgs e)
{
    gvwServers.DataBind();
}
protected void gvwServers_Cancelling(object sender, GridViewCancelEditEventArgs e)
{
    e.Cancel = true;
    gvwServers.EditIndex = -1;
    gvwServers.DataBind();
}

事实上,这些例程中的大多数都能正确触发,即编辑、删除和取消。但是当我点击“更新”按钮时,“gvwServers_Edit()”会被触发,这是为什么?如何使“更新”按钮点击触发“gvwServers_Updating()”呢?
更新:我的问题已在此处得到解决:here
1个回答

0

您可以随时将事件重新映射到函数。

几乎可以...“编辑”事件只能映射到具有(object sender, GridViewCancelEditEventArgs e)作为参数的函数,同样,更新函数必须具有(object sender, GridViewUpdatedEventArgs e)参数...

您可以使用预制的事件处理函数或创建自己的函数,关键是'e'参数类型。

如果您想要在Edit()和Updating()事件中拥有共同的功能,请将该代码放入单独的函数中,并在处理程序触发这些事件时调用该函数。


onrowupdating="gvwServers_Updating"并定义函数gvwServers_Updating(object sender, GridViewUpdateEventArgs e)不是将事件映射到函数吗?我不明白为什么我单击更新时会触发gvwServers_Edit函数。 - El Ronnoco

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接