当前位置:  开发笔记 > 编程语言 > 正文

ASP.NET中List <T>和ListViews的Dictionary <T>

如何解决《ASP.NET中List<T>和ListViews的Dictionary<T>》经验,为你挑选了1个好方法。



1> stevemegson..:

您的问题出现是因为在DataBindFooList()中数据绑定ddlListOfBars没有意义,因为数据绑定不只有一个DropDownList.当您调用lv.DataBind()时,ListView会为每个Foo创建一个ItemTemplate副本,每个Foo包含一个ddlListOfBars.您需要告诉它将每个DropDownList绑定到正确的List .您可以通过使用数据绑定表达式而不是后面的代码设置ddlListOfBars的数据源来执行此操作:


  <%#Eval("Key.Name") %>
  

请注意,您还需要使用"Key.Name"来获取Foo的name属性.您绑定的各个字典项是KeyValuePair >,它具有Key属性和Value属性,分别用于访问Foo和List .

编辑
如果您在ItemTemplate中进行了很多操作,那么将内容移动到用户控件中会很有用.用户控件可以具有强类型属性来访问DataItem,并且具有对其子控件的强类型访问.这为您提供了ItemDataBound事件的灵活性,而没有所有的转换和FindControl()噪声.我怀疑在这种情况下我会烦恼,但它会像是一样



  

  
     

ListViewContents.ascx ...



ListViewContents.ascx.cs ...

public KeyValuePair> DataItem
{
    get; set;
}

protected override void OnDataBinding(EventArgs e)
{
    base.OnDataBinding(e);

    lbName.Text = DataItem.Key.Name;

    ddlListOfBars.DataTextField = "ItemName";
    ddlListOfBars.DataValueField = "ItemValue";
    ddlListOfBars.DataSource = DataItem.Value;
    ddlListOfBars.DataBind();   
}

推荐阅读
郑小蒜9299_941611_G
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有