あなたはASP .NET State Managementを探していると、それに対処するいくつかの方法があります。
- ビューステート
- コントロール状態
- 隠しフィールド
- クッキー
- クエリ文字列
- は、アプリケーション状態
- セッション状態
- プロファイルのプロパティ
あなたは情報が上に格納されようとしているので、それはそれを行うための最も簡単な方法ですので、私はデータを保存するために、セッション状態を使用するためにあなたを示唆しているより多くの情報を提供していませんでしので、 (情報がクライアントに2回、ViewView.DataBind()に1つ、ViewStateに1つずつ)ViewStateを誤って使用するのではなく、サーバー側にあります。あなたが挿入/削除/あなたがmyGridViewDataセッション変数にデータセットを更新する必要があり、新しい行を変更するたびに
MyGridView.Datasource = (List<Object>)Session["myGridViewData"];
MyGridView.DataBind();
:あなたはこのような何かをする必要があります。
そして、あなたは情報を失ういけないので、すべてのポストバックでGridView.DataSourceをリフレッシュすることを忘れないでください:
protected void Page_Load(object sender, EventArgs e)
{
grid1.DataSource = getDataSet();
grid1.DataBind();
}
private List<Object> getDataSet()
{
if (Session["myGridViewData"] == null)
Session["myGridViewData"] = new List<employee>();
return (List<Object>)Session["myGridViewData"];
}
protected void addNewRowButton_Click(object sender, EventArgs e)
{
List<Object> list = (List<Object>)Session["myGridViewData"];
list.Add(new Object());
Session["myGridViewData"] = list;
}
Page_Loadイベントにコントロールを更新することをお勧めではないことに注意しておいてください、あなたの代わりに処理する必要がありますあなたのポストバックのどれがデータを更新し、apropiateメソッド(最初にページを読み込み、行を追加/変更/削除)でグリッドをリフレッシュします。あなたは、.NET Frameworkを使用している場合は
4.5または私はあなたが結合GridViewのモデルを使用することをお勧めします優れた(SelectMethod)これにより GridView Model Bindingは、クリーンな方法があるPage_Loadメソッドで明示的にすべてのポストバックでデータソースを更新するために必須ではありませんこれを行うの。
EDIT:here
セッション状態やViewStateのから?
ViewStateの状態値を保持することが最良の選択肢ではない場合は、 である場合があります。データの
大量:最も一般的に使用される代替は、一般的に、より適しているため、セッション 状態、です。 ViewStateは、ブラウザに送信されるページ(HTMLペイロード)とフォーム のサイズが大きくなるので、大量のデータを格納するには適していません。
UIにまだ表示されていないデータを保護します。 ViewStateのデータはエンコードされ、オプションで暗号化されることがありますが、データがクライアントに送信されない場合は、データ が最も安全です。したがって、セッション状態は より安全なオプションです。 (データベース内のデータを保存することは、さらに多くのデータベース資格情報があるため、 が安全です。 にSSLを追加することもできます)。しかし、プライベートデータ をUIに表示した場合、 のリンク自体のセキュリティで快適です。この場合、同じ 値をViewStateに入れることも安全です。
オブジェクトは、ViewState(DataSetなど)に簡単にシリアル化されません。 ViewStateシリアライザは、以下にリストされた小さなオブジェクトセット のために最適化されています。シリアライズ可能な他のタイプの は、ViewStateで永続化されている可能性がありますが、遅く、表示サイズが大きい フットプリントを生成します。
[グリッドビューに行を追加します](http://stackoverflow.com/questions/19257451/add-row-to-grid-view) – VDWWD
@VDWWDの可能性のある重複した更新をチェックしてみて下さい – Null