非表示データを使用してGridViewから行を削除する方法は?
-
03-07-2019 - |
質問
SqlServerデータソースに直接リンクされるのではなく、関数を介して入力されるGridViewを使用して、単純なプロトタイプフロントエンドを作成しています。
つまり、現在のグリッド/基になるデータベースから行/レコードを削除できます
- AutoGenerateDeleteButton = trueの設定
- 最初の列に一意のレコードIDを表示する
- RowDeletingイベントの処理
- grid.Rows [e.RowIndex] .Cells [idIndex] .Textを取得してIDを取得
- 削除を行う関数にその番号を渡す
これはうまく機能しているように見えますが、ユーザーに何の意味も持たないので、ユーザーにidを表示したくないです。
id列のVisibleプロパティをfalseに設定しようとしましたが、上記の手順4で空の文字列が返されるため、レコードは削除されませんでした。
では、非表示のID番号を各行に保存するにはどうすればよいですか
またはこれについて完全に間違った方法で行っていますか?
回答をフォロー:
両方の回答に感謝し、最終的にはEricのDataKeyNamesのやり方になりました。私のようなASP.NETを初めて使用する他の人々のために、私が使用した手順
-
グリッドDataSourceを設定し、DataBind()を呼び出した行の間に追加しました
grid.DataKeyNames = new string [] {" id"};
-
次にRowDeletingを処理する関数で、
を使用してidを取得しましたgrid.DataKeys [e.RowIndex] .Value
解決
GridViewにはDataKeyNamesプロパティがあります。データソースをグリッドにバインドするとき、DataKeyNamesを設定します(通常、PKフィールドは1つだけの名前で)。 PKは表示しませんが、コードビハインドから取得できます。
他のヒント
Visible = falseは、ページにレンダリングしないことを意味します。必要なのは、それをテンプレートフィールドにし、HiddenFieldを使用して値を保持するか、コントロールのスタイルを「display:none;」に設定することです。これは、クライアント側のコードがAjax呼び出しなどの値にアクセスする必要がある場合に当てはまります。
それ以外の場合は、@ Eric Z Beardが示唆するように、DataKeyNamesプロパティを使用します。