2012-09-13 210 views
0

我得到了數據源#1綁定的數據網格,例如,在DataGrid中設置DropDownList的SelectedValue

public class Class 
{ 
    public string Val { get; set; } 
    public string Val2 { get; set; } 
} 
List<Class> classes = new List<Class>(); 
dgr.DataSource = classes; 

這裏面的DataGrid我有一個列表框與數據源#2每一行勢必:

<Columns> 
    <asp:TemplateColumn HeaderText="Spaltenname"> 
    <ItemTemplate> 
     <asp:ListBox runat="server" DataTextField="Text" DataValueField="Value" DataSource="<%#oParentTablesHandler.DataTableXYZ%>" /> 
    </ItemTemplate> 
    </asp:TemplateColumn> 
</Columns> 

這工作,但我有問題設置的SelectedValue。

SelectedValue="<%# "" %> 

將工作,但我需要一個選擇取決於來自數據源#1的Val。我怎樣才能做到這一點?我需要使用Eval我猜,但

SelectedValue="<%# Eval("Val") %> did not work... 

編輯:我發現我想選擇一個項目的文本,而不是價值,argh。有沒有辦法做到這一點?

+1

更糟糕來糟糕的是,你可以隨時退回到上設置值的RowDataBound。另外,通過DataGrid,你的意思是1.1數據網格還是2.0 GridView控件? –

+0

這是1.1數據網格,但這不應該改變任何東西。 – UNeverNo

回答

0

嘗試這樣的..

<%# ((Class)Container.DataItem).Val %> 

UPDATE:

well.there可能是 '瓦爾' 屬性某些值可能不是在你的數據源#2存在的相應列...

所以對於測試的目的嘗試以下..

<asp:ListBox .. AppendDataBoundItems="true"> 
    <Items>  
<asp:ListItem Text="NA" Value="" /> 
</Items> 
</asp:ListBox > 
+0

我得到一個ArgumentOutOfRangeException,說SelectedValue有一個不在元素列表中的值,但是我所有的值都應該在裏面。 – UNeverNo

+0

我手動將Val的所有項目設置爲存在於我的數據源#2中的一個值,但仍然收到相同的錯誤。我是否需要將我的數據源#2的值作爲DataTable並因此返回對象? – UNeverNo

+0

Try SelectedValue ='<%#Eval(「Val」)%>'..你需要在內部和外部有不同的引號,因此編譯器可以區分兩個.. – Glk

相關問題