|
分類:[.NET 全般]
GRIDVIEWを作成し、そこにテーブルAの内容を表示させています。
・テーブルAには商品、区分名、ケース数、単価のフィールドがあり、 区分名のフィールドのみ値がNULLの状態です。
・テーブルBには区分名のみが入っています。
GRIDVIEWの区分名の欄を編集時DropDownlistにして、 DropDownlistにテーブルB.区分名を表示。更新すると、選択した区分名が テーブルA.区分名に格納されるようにしたいと思っています。
以下作業の流れですが、 @テーブルAをGRIDVIEWで表示。編集機能を付けました。 この状態だと編集画面のときに入力ボックスが現われ、正常に入力内容が更新されています。
AGRIDVIEWの区分名の項目をTemplatefieldにし、 Templateの編集で、区分名のEdititemTemplateにテーブルBのSqldatasourceを設定し、 それに関連づけたDropDownlistを設定しました。 *Selectedvalueには何も書き込んでいません
BテーブルA.区分名がNULLのためそのままだと「SelectedValuのプロパティーが一覧にありません。」と出る為 .VBに以下を書き込みました。
Protected Sub DropDownListCommentKbn_DataBound(ByVal sender As Object, ByVal e As EventArgs) Dim ddl As DropDownList = DirectCast(sender, DropDownList) Dim li As ListItem
li = New ListItem("(選択)", "") ddl.Items.Insert(0, li)
Dim dtv As DetailsView = DirectCast(ddl.NamingContainer, DetailsView)
If dtv.DataItem IsNot Nothing Then
Dim com_kbn_mei As String = DirectCast(dtv.DataItem, DataRowView)("KBN_MEI").ToString()
ddl.ClearSelection()
li = ddl.Items.FindByValue(com_kbn_mei)
If li IsNot Nothing Then li.Selected = True
End If
End If End Sub
C編集画面にすると、意図した通り、GRIDVIEWの区分名の欄がDropDownlistになり、 DropDownlistにテーブルB.区分名が表示されていました。
ここまできたのですが、いざ更新ボタンをクリックしても、テーブルA.区分名には何も格納されません。 GRIDVIEWの他の項目欄(DropDownlistにした区分名以外)は入力ボックスのままなのですが、 これらは入力内容が更新されています。
バインドされない?からでしょうか。 アドバイスよろしくお願い致します。
|