DataTable にバインドしようとした GridView のセットアップがあります。次に、Web ページを介して GridView の値にいくつかの変更を加えます。次に、ボタン クリックのコードの背後に移動し、DataTable にまだ古いデータが含まれていることを確認します。その中の値...
GridView の ASPX マークアップ コード:
<asp:gridview ID="ESBAndTSRValuesInputGridView" runat="server" ShowFooter="true" AutoGenerateColumns="false">
<Columns>
<asp:BoundField DataField="Award ID" HeaderText="Award ID" Visible="false" />
<asp:BoundField DataField="Award Name" HeaderText="Award Name" />
<asp:TemplateField HeaderText="ESB Value">
<ItemTemplate>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="TSR Value">
<ItemTemplate>
<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:gridview>
ボタン クリックのコード ビハインドからの GridView データの初期化:
DataTable dt = new DataTable();
dt.Columns.Add(new DataColumn("Award ID", typeof(string)));
dt.Columns.Add(new DataColumn("Award Name", typeof(string)));
dt.Columns.Add(new DataColumn("ESB Value", typeof(string)));
dt.Columns.Add(new DataColumn("TSR Value", typeof(string)));
DataRow[] PSPAwards = dtAwards.Select("AWARDTYPE = 'PSP'");
foreach (DataRow dr in PSPAwards)
{
dt.Rows.Add(dr["AWARDID"].ToString(), dr["AWARDNAME"].ToString(), "0", "100");
}
ViewState["ESBAndTSRValuesDataTable"] = dt;
ESBAndTSRValuesInputGridView.DataSource = dt;
ESBAndTSRValuesInputGridView.DataBind();
上記のコードでは、デフォルト値 0 と 100 で行を初期化していることがわかります。これは、Web ページからこれらの値を変更した後のデバッグ イベント中に表示されるものです。
GridView に行われたすべての変更を、リンクされた DataTable に自動的に永続化するにはどうすればよいですか?
私はVS2005で.NET 2.0 Frameworkを使用しています..