- PR -

DataSource

1
投稿者投稿内容
なび
ぬし
会議室デビュー日: 2007/08/27
投稿数: 273
投稿日時: 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番上に
「選択して下さい」を表示させたいのです。

どのようにするのか
わかる方ご教授頂けないでしょうか?

よろしくお願いします。
pt
会議室デビュー日: 2004/11/05
投稿数: 14
投稿日時: 2008-05-01 18:46
Webですか??
アプリですか??

combo.DataTextField = "県名";
combo.DataValueField = "県コード";
combo.DataSource = データテーブル;
combo.DataBind();
combo.Items.Insert(0, "選択して下さい");

でどうですか??
Webだと確実にできますが、アプリの場合はバインド後にインサートできない可能性があります。
お試しあれ。
なび
ぬし
会議室デビュー日: 2007/08/27
投稿数: 273
投稿日時: 2008-05-01 19:26
ptさん、ありがとうございます。

問題はアプリのほうです。


DataSource を設定したあと、Items.Addを
行うと
「データソースプロパティを設定した時に
Itemsコレクションを変更することは
 できません」のエラーになります。
pt
会議室デビュー日: 2004/11/05
投稿数: 14
投稿日時: 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 = "県コード";

でどうでしょう??
不足がありましたら、ご連絡下さい。
かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2008-05-02 11:16
AppendDataBoundItems ?
http://msdn.microsoft.com/ja-jp/library/system.web.ui.webcontrols.listcontrol.appenddatabounditems(VS.80).aspx
_________________
かるあ のメモスニペット
1

スキルアップ/キャリアアップ(JOB@IT)