ASP.NET GridViewのホームへ戻る

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のデザイナからGridView1SqlDataSource1のオブジェクトをコピーしたら、GridView04StepUp1.aspxのデザイナに貼り付けします。デザイナにGridView1SqlDataSource1のオブジェクトが作成されます。デザイナの最下位から[ソース]をクリックしてソースビューに切り替えます。

 

SqlDataSource<UpdateParameters>…</UpdateParameters><asp:Parameter Name="Fax" Type="String" />に「DefaultValue ="なし"」を追加します。

 

<asp:Parameter Name="Fax" Type="String" DefaultValue ="なし"/>

 

 

図 FaxParameterに「DefaultValue ="なし"」を追加

 

 

3. ブラウザに表示

 

VWD 2005のツールバーから[デバッグの開始]ボタンをクリックしてブラウザに表示します。ブラウザが起動されて、GridViewCustomersテーブルが表示されます。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>

 

ASP.NET GridViewのホームへ戻る