- - PR -
DataSource
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2008-05-01 18:05
こんにちは。
1つ教えて下さい。 VB2005+SQLServer2005の環境です。 コンボボックスでよく見かける 最初の行に「選択して下さい」があって 次に都道府県名が表示するようなものが ありますが、それをデータからセット する場合 SELECT 0 AS 県コード、'選択して下さい’AS 県名 UNION ALL SELECT 県コード、県名 FROM 県テーブル ORDER BY 県コード のSQL文を実行してDataSourceプロパティにセット しています。 SELECT 0 AS 県コード、'選択して下さい’AS 県名 UNION ALL を使わないで同様なことをしたいのです。 つまりDataSetは SELECT 県コード、県名 FROM 県テーブル ORDER BY 県コード でしかとらず、 そのあとコンボボックスの1番上に 「選択して下さい」を表示させたいのです。 どのようにするのか わかる方ご教授頂けないでしょうか? よろしくお願いします。 |
|
投稿日時: 2008-05-01 18:46
Webですか??
アプリですか?? combo.DataTextField = "県名"; combo.DataValueField = "県コード"; combo.DataSource = データテーブル; combo.DataBind(); combo.Items.Insert(0, "選択して下さい"); でどうですか?? Webだと確実にできますが、アプリの場合はバインド後にインサートできない可能性があります。 お試しあれ。 |
|
投稿日時: 2008-05-01 19:26
ptさん、ありがとうございます。
問題はアプリのほうです。 DataSource を設定したあと、Items.Addを 行うと 「データソースプロパティを設定した時に Itemsコレクションを変更することは できません」のエラーになります。 |
|
投稿日時: 2008-05-02 10:40
アプリのバインドはWebとは違いますからね。。
方法として ・バインドさせない(値を直接挿入) ・バインド前にデータテーブルを補正する 後者の方法を下記に書きます。 // データロウに情報を追加。コードは最小値 ds.Tables[0].Rows.Add("-1","選択して下さい"); // ソート処理。コードに最小値が入っているため、 // コードでソートすると一番上にくる ds.Tables[0].DefaultView.Sort = "県コード"; // バインド処理 comboBox1.DataSource = ds.Tables[0].DefaultView; comboBox1.DisplayMember = "県名"; comboBox1.ValueMember = "県コード"; でどうでしょう?? 不足がありましたら、ご連絡下さい。 |
|
投稿日時: 2008-05-02 11:16
AppendDataBoundItems ?
http://msdn.microsoft.com/ja-jp/library/system.web.ui.webcontrols.listcontrol.appenddatabounditems(VS.80).aspx _________________ かるあ のメモ と スニペット |
1