2011-07-26 16 views
0

コンテキスト: 私はavailables [choices]のリストを返すQueryを持っています。私は[値]のリストを持つエンティティを持っています。私は[選択肢]を持つグリッドをユーザに与えたいと思いますし、[選択肢]が選択/選択されているかどうかに応じて、[選択肢]の[value]を[entity] [values ]。ASP.NETデータバインディング選択リストとしてのグリッド

これはかなり標準的な要求ですが、私の質問はこれです。このタイプのデータバインディングを宣言的に行うことは可能ですか?つまり、データソースコントロールとバインディング式のみの組み合わせでこのデータバインディングを行うことはできますか?イベントハンドラを使用せずに手動で値を抽出することなく、別のリストにバインドされたグリッドから選択した項目値に値リストをバインドするバインディング式/データソースをどのように定義しますか?

答えて

1

あなたが何かを得るようにあなたが外側の2つのクエリを結合することができます:あなたが必要しかし、Oracle構文、OJ &デコードを()はご容赦ください

select c.id, c.item, decode(s.id,null,'N','Y') selected 
    from color c, selections s 
where c.id=s.id (+) 

を。その後:)

ID Item  Selected 
-- ----- -------- 
1  Blue  N 
2  Red  Y 
3  Green Y 

、その新しいselected列にselectedプロパティをデータバインド。

UPDATE:

sSQL = "select c.id, c.name, case c.id " 
for each e as entity in entitycollection 
    sSQL &= "when " & e.id & " then 'Y' " 
next 
sSQL &= " else 'N' end selected " 
sSQL &= "from color" 

当然、あなたはStringBuilderのではなく、これらの連結からこれを行うと思いますが、あなたのアイデアを得ます。 :)

+0

これは、私がダウンしていた最初のルートでした。私はグリッドがバインドされている値の型のリストを持っており、id、description、および値が取り出されるときに設定された選択されたプロパティーを含んでいます。私はGridViewが複数の行選択をサポートしていないので(そして私はtelerikコントロールを使用しています)、この質問を作成することに失敗したことに気付きました。私は自分のエンティティで選択されたプロパティにバインドするのではなく、選択した値のコレクションにバインドしています。私は選択結合をどのように定義するか分からない。 – wllmsaccnt

+0

したがって、選択した項目のリストはテーブルにはなく、他の種類のエンティティです。あなたはSQLを作成している時点で利用可能ですか?あなたはそれがYかNかどうかを決定するような方法でSQL(おそらくデコード()?)を構築できますか? 選択c.id、c.name、ケース をc.id <エンティティ(IES)を介し%のループ%> エンティティ次いで 'N' <%端ループ%> –

+0

が答えで更新されたコードを参照してください。コメントにコードを表示するのは難しいことです。 :) –

関連する問題