2012-09-13 93 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

相关问题