2

このドキュメントによると、グリッドビューを追加し、onupdate を実装しました。 http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.rowediting.aspx

ページを開いて edit をクリックすると、editinex が設定され、再バインドされます。

protected void rowEdit(object sender, GridViewEditEventArgs e)
{
    EditProducts.EditIndex = e.NewEditIndex;
    EditProducts.DataBind();
}

3 番目の列で、値を変更します (たとえば、「こんにちは」を「さようなら」に変更します)。次に、「更新」をクリックします。(最初の列は編集と削除、または更新とキャンセルのボタン列で、2 番目の列は ID を示します)。

onrowupdate メソッドが呼び出され、msdn のサンプル コード (2 番目のデータ列) に従って列 3 の値を取得しようとします。

protected void RowUpdating(object sender, GridViewUpdateEventArgs e)
{
    GridViewRow row = EditProducts.Rows[e.RowIndex];
    String previousValue= ((TextBox)(row.Cells[2].Controls[0])).Text;
    String actualValue = Request.Params["EditProducts$ctl02$ctl03"];

文字列 previousValue は「さようなら」ではありません。まだ「こんにちは」です。

Firefox では、「さようなら」が送信されていることがわかりますが、rowUpdating の TextBox コントロールの値は「hello」です。ビューステートから誤って取得する必要があります。

そのため、request.params を取得する actualValue を追加し、「さようなら」に設定しました。

次の質問があります。

msdn で提供されているコードは間違っていますか?

TextBox コントロールは、送信時に入力に含まれる値の Text プロパティを表すはずではありませんか?

4

1 に答える 1