2011-07-26 40 views
0

上下文: 我有一個查詢返回可用[list]選項。我有一個具有[值]列表的實體。我想給用戶提供[選擇]的網格,並且根據選擇何種[選項],我希望將這些[選項]的[值]分配給[實體]的[值]。ASP.NET數據綁定作爲選擇列表的網格

這是一個相當標準的請求,但我的問題是這樣的:是否有可能以聲明方式執行這種類型的數據綁定?也就是說,我可以使用只有數據源控件和綁定表達式的組合來執行此數據綁定嗎?你將如何定義一個綁定表達式/數據源,它允許將一系列值綁定到綁定到不同列表的網格中的選定項值,而無需使用事件處理程序並手動提取值?

回答

1

你能外連接兩個查詢,讓你得到這樣的:

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

請原諒甲骨文語法,OJ &解碼(),但是你的需要。 :)

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,一個描述以及在檢索值時設置的selected屬性。我意識到我搞砸了這個問題,因爲GridView不支持多行選擇(並且我正在使用telerik控件)。我不綁定到實體上的選定屬性,而是綁定到選定值的集合。我不確定如何定義選擇綁定。 – wllmsaccnt

+0

因此,所選項目的列表不在表格中,而是其他類型的實體。它在創建SQL時是否可用?你可以建立SQL(也許是decode()?)以確定它是Y還是N? 選擇c.id,c.name,殼體c.id <%遍歷實體(IES)%> 當實體隨後 'N' <%的末端迴路%> –

+0

查看在應答更新的代碼段。在評論中顯示代碼太難了。 :) –