■GridViewの列がNullのとき既定値を設定する (GridView04StepUp1.aspx)
GridViewから[編集]ボタンをクリックしてレコードを編集するとき、列の値がNullから既定値を埋め込むようなサンプルを作成します。
このサンプルは、以下のノウハウを習得することができます。
▼ GridViewの列がNullのとき既定値を埋め込む方法

「ファックス」を空白(Null)の状態で[更新]ボタンをクリックする

「ファックス」に既定値「なし」が表示された
図 GridViewから列を空白にすると既定値が埋め込まれる (fig13-1-35a.tif, fig13-1-35b.tif)
1. 新規Webページ作成
ソリューションエクスプローラのプロジェクトの右クリックから[新しい項目の追加]を選択して、新規Webページ「GridView04StepUp1.aspx」を作成します。
2. コントロール作成
GridView04.aspxのデザイナからGridView1とSqlDataSource1のオブジェクトをコピーしたら、GridView04StepUp1.aspxのデザイナに貼り付けします。デザイナにGridView1とSqlDataSource1のオブジェクトが作成されます。デザイナの最下位から[ソース]をクリックしてソースビューに切り替えます。
SqlDataSourceの<UpdateParameters>…</UpdateParameters>の<asp:Parameter Name="Fax" Type="String" />に「DefaultValue ="なし"」を追加します。
<asp:Parameter Name="Fax" Type="String" DefaultValue ="なし"/>

図 FaxのParameterに「DefaultValue ="なし"」を追加
3. ブラウザに表示
VWD 2005のツールバーから[デバッグの開始]ボタンをクリックしてブラウザに表示します。ブラウザが起動されて、GridViewにCustomersテーブルが表示されます。GridViewから先頭行の[編集]ボタンをクリックすると編集モードに切り替わり列の値がテキストボックスに表示されます。「ファックス」に列に何も入力しないで、[更新]ボタンをクリックすると、「ファックス」の列に「なし」が埋め込まれて表示されます。

図 編集時「ファックス」の列を空白にすると既定値「なし」が埋め込まれる
◆解説
データソース構成ウィザードを起動してNwindSQL.mdfデータベースからCustomersテーブルを選択すると、次のようなSqlDataSourceが作成されます。UpdateCommandプロパティには、Custoemrsテーブルのレコードを更新するためのUPDATEステートメントが格納されます。このUPDATEステートメントには、パラメータ変数を使用してフィールドの値を代入します。パラメータ変数のデータ型は、<UpdateParameters>…</UpdateParameters>に宣言されています。フィールド値がNullのとき、既定値を埋め込むには、<asp:Parameter>にDefaultValueプロパティを追加します。たとえば、「なし」を埋め込むには、「DefaultValue ="なし"」を追加します。
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:NwindSQLConnectionString %>"
SelectCommand="SELECT [CustomerID], [CompanyName], [ContactName], [Phone], [Fax] FROM [Customers]"
UpdateCommand="UPDATE [Customers] SET [CompanyName] = @CompanyName, [ContactName] = @ContactName, [Phone] = @Phone, [Fax] = @Fax WHERE [CustomerID] = @original_CustomerID">
<UpdateParameters>
<asp:Parameter Name="CompanyName" Type="String" />
<asp:Parameter Name="ContactName" Type="String" />
<asp:Parameter Name="Phone" Type="String" />
<asp:Parameter Name="Fax" Type="String" DefaultValue ="なし"/>
<asp:Parameter Name="original_CustomerID" Type="Int32" />
</UpdateParameters>
</asp:SqlDataSource>