【问题标题】:Set SelectedValue of DropDownList inside DataGrid在 DataGrid 中设置 DropDownList 的 SelectedValue
【发布时间】:2012-09-06 18:29:07
【问题描述】:

我有一个数据网格,其中数据源 #1 绑定到,例如

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

在这个数据网格中,我为每一行都有一个列表框,其中数据源 #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...

编辑:我发现我想按文本而不是按值选择一个项目,啊。有没有办法做到这一点?

【问题讨论】:

  • 更糟的是,您总是可以退回到在 RowDataBound 上设置值。另外,DataGrid 是指 1.1 的数据网格,还是 2.0 的 GridView 控件?
  • 这是 1.1 的数据网格,但这不应该改变任何东西。

标签: asp.net data-binding datagrid .net-3.5


【解决方案1】:

像这样试试..

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

更新:

嗯。'Val' 属性中可能有一些值可能不存在于 Datasource#2 的相应列中...

所以为了测试目的,请尝试以下..

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

【讨论】:

  • 我得到一个 ArgumentOutOfRangeException 说 SelectedValue 的值不在元素列表中,但我的所有值都应该在其中。
  • 我手动将 Val 的所有项目设置为我的数据源 #2 中存在的一个值,但我仍然得到相同的错误。我是否可能需要转换我的数据源 #2 的值,它是一个 DataTable 并因此返回对象?
  • Try SelectedValue='' ..你需要在里面和外面有不同的引号,这样编译器才能区分两个..
  • 我使用数据网格提供的事件进行了老式的处理。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-11-28
  • 2011-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-23
  • 2013-08-14
相关资源
最近更新 更多