1

CommandFieldに組み込まれている[編集]、[キャンセル]、[更新]、および[削除]ボタンを使用する基本的なGridViewものがあります。プロパティは「Image」(ImageButtons)に設定され、次のように定義されます。CommandFieldButtonType

<asp:GridView ID="gv" runat="server" AutoGenerateColumns="false"
OnRowEditing="gv_RowEditing" OnRowCancelingEdit="gv_RowCancelingEdit" OnRowUpdating="gv_RowUpdating" OnRowDeleting="gv_RowDeleting">
<Columns>
    <asp:CommandField 
        ShowEditButton="true" ShowDeleteButton="true" ButtonType="Image"
        EditImageUrl="~\Images\Icons\gridView_Edit.png"
        CancelImageUrl="~\Images\Icons\gridView_CancelEdit.png"
        UpdateImageUrl="~\Images\Icons\gridView_Update.png"/>
</Columns>

OnRowEditing、OnRowCancelingEdit、OnRowUpdating、およびOnRowDeletingイベントのサーバー側C#イベントハンドラーは正常に機能しており、次のように定義されています。

protected void gv_RowUpdating(object sender, GridViewUpdateEventArgs e) { }
protected void gv_RowEditing(object sender, GridViewEditEventArgs e) { }
protected void gv_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e) { }
protected void gv_RowDeleting(object sender, GridViewDeleteEventArgs e) { }

ページがHTMLにレンダリングされると、ImageButtonsCommandFieldは次の(簡略化された)<input>タグにレンダリングされます。

<input type="image" name="ctl00$Body$gv$ctl02$ctl00" src="Images/update.png" alt="Update" style="border-width:0px;">
<input type="image" src="Images/delete.png" alt="Delete" onclick="javascript:__doPostBack('ctl00$Body$gv','Delete$0')" style="border-width:0px;">
<input type="image" src="Images/edit.png" alt="Edit" onclick="javascript:__doPostBack('ctl00$Body$gv','Edit$0')" style="border-width:0px;">
<input type="image" src="Images/cancel.png" alt="Cancel" onclick="javascript:__doPostBack('ctl00$Body$gv','Cancel$0')" style="border-width:0px;">

注:実際には、GridViewが編集モードであるかどうかに応じて、一度にレンダリングされるのは編集/削除または更新/キャンセルのいずれかのみです。

では、削除、編集、キャンセルボタンを使用するのに、レンダリングされた更新ボタンがASP.NETの__doPostBack JavaScript関数を使用しないのはなぜですか?

OnRowUpdatingイベントどのように処理されますか?

:デフォルトButtonTypeを使用するCommandFieldと__doPostBackレンダリングされますが、__doPostBackを使用する場合ButtonType="Image"は含まれません

4

1 に答える 1

0

これらの 4 つのボタンは一緒に表示されることはありません。「編集」「削除」が表示されるか、「編集」をクリックした後に「更新」「キャンセル」が表示されます。

したがって、「編集」ボタンをクリックすると、ボタンのセットが「編集」「削除」から「更新」「キャンセル」に変わるのと同じように、「更新」ボタンには が__doPostback添付されます。

その後、「編集」ボタンをクリックした直後にOnRowUpdating、通常どおり処理されます。doPostback

私の例の1つをダウンロードできます

http://www.ii.uni.wroc.pl/~wzychla/ra2829/example3a.zip

それを見るために。ボタンのタイプをImagein に変更しDefault.aspx、ハンドラーをグリッドにアタッチするだけです。

于 2013-01-18T10:52:05.100 に答える