トップ回答者
DataGrid内のDropDownListにバインドする方法

質問
-
C#,Visual Studio2003を使用してWebフォームを作成しておりますが、
マスタメンテナンス画面にてDataGridの中でDropDownListにて値を変更できるようにしたいと思っています。そこで、該当ColumnsのItemTemplateにDropDownListを配置し、
あらかじめ用意しておいたDataTableBの内容をバインドしたいのですが、
うまくいきません。(何もバインドされない状態です。)DataTableA(DataGridにバインド)
+----+----+
|品目|区分|
+----+----+
| A | 1 |
+----+----+
| B | 2 |
+----+----+
| C | 1 |
+----+----+DataTableB(DropDownListにバインド)
+----+---------+
|区分| 区分名 |
+----+---------+
| 1 | リスト1 |
+----+---------+
| 2 | リスト2 |
+----+---------+同じDropDownListをDataGridの外に配置した場合は正常にバインドできています。
バインドの方法は、DropDownListのプロパティ設定で、DataSourceにDataTableBを含むデータセット、
Datamemberに"DataTableB"、DataTextFieldに"区分名"、
DataValueFieldに"区分"を設定しています。DataGridの中にDropDownListを配置する場合のバインド方法が違うのではないかと思うのですが、
何かご存知の方がいらっしゃいましたら教えて頂けないでしょうか?
回答
-
こんにちは!(^^)!ふ~です。
>何かのタイミングで再度バインドし直さなければならないという事でしょうか?
この場合は、動的に、バインドされています。
<asp:TemplateField
SortExpression="割引内容"
HeaderText="割引内容">
<ItemTemplate>
<asp:DropDownList
ID="DropDownList1"
Runat="server"
DataSourceID="SqlDataSource_割引内容"
DataTextField="割引内容"
DataValueField="DrpNo"
Width="100px"
SelectedValue='<%# Eval("割引内容No") %>'>
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateField>この中で、<asp:DropDownList....>のようにDropDownListコントロールのインスタンスが生成されております。
生成したばかりですので、何も値が入っておりません。
そこで、DataSourceID、SelectedValueを設定して動的に値を格納しております。- 回答としてマーク sk7474 2009年3月5日 2:16
すべての返信
-
こんにちは!(^^)!ふ~です。
>何かのタイミングで再度バインドし直さなければならないという事でしょうか?
この場合は、動的に、バインドされています。
<asp:TemplateField
SortExpression="割引内容"
HeaderText="割引内容">
<ItemTemplate>
<asp:DropDownList
ID="DropDownList1"
Runat="server"
DataSourceID="SqlDataSource_割引内容"
DataTextField="割引内容"
DataValueField="DrpNo"
Width="100px"
SelectedValue='<%# Eval("割引内容No") %>'>
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateField>この中で、<asp:DropDownList....>のようにDropDownListコントロールのインスタンスが生成されております。
生成したばかりですので、何も値が入っておりません。
そこで、DataSourceID、SelectedValueを設定して動的に値を格納しております。- 回答としてマーク sk7474 2009年3月5日 2:16
-
!(^^)!ふ~様、何度も申し訳ないです。
私の方で作成したソースは以下のようになっています。
上記で教えて頂いたものと異なる点は、SelectedValueの指定がないというところぐらいかと思うのですが、
SelectdValueを記述しようとしたところそのような属性が存在せずエラーになってしまいました・・・。<asp:TemplateColumn HeaderText="区分">
<ItemTemplate>
<FONT face="MS UI Gothic">
<asp:DropDownList id=ddl_ArepCd runat="server" Width="142px" DataSource="<%# dataSet1 %>" DataMember="DataTableB" DataTextField="区分名" DataValueField="区分">
</asp:DropDownList></FONT>
</ItemTemplate>
</asp:TemplateColumn>何か根本的に間違えているのでしょうか・・・。
-
こんにちは!(^^)!ふ~です。
そもそも、VS2005のWeb開発で、GredViewにDropDownListを張り付けた場合と、Visual Studio2003のWeb開発でDataGridにDropDownListを張り付けた違いが有りました。
◆ご参考資料です。
以上
DataGridのカラムにCheckBox/DropDownList/Imageを表示するには