3

私はグリッドビューを持っています。マークアップはこんな感じ…

<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...

私のコードビハインドにはこれがあります...

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()ですか?

更新:私の問題はここで解決されました。

4

1 に答える 1

0

いつでもイベントを関数に再マップできます..

ほとんど...「編集」イベントは(object sender, GridViewCancelEditEventArgs e)、パラメータとして持つ関数にのみマップできます。同様に、更新関数にはパラメータが必要(object sender, GridViewUpdatedEventArgs e)です...

既製のイベント処理関数を使用するか、独自のイベント処理関数を作成できます。ここでもキーは「e」パラメータ タイプです。

Edit() イベントと Updating() イベントの両方に共通の機能を持たせたい場合は、それらのイベントが発生したときにハンドラーによって呼び出される別の関数にそのコードを配置します。

于 2011-01-31T17:44:35.410 に答える