代码之家  ›  专栏  ›  技术社区  ›  Patrick Desjardins

如何获取对象类型(不是字符串)的DropDownList中的所选值?

  •  2
  • Patrick Desjardins  · 技术社区  · 15 年前

    我用具有属性的对象填写列表。我可以绑定到DropDownlist而不产生任何问题:

         cbo.DataSource = possibleChoice;
         cbo.DataValueField = "Value";
         cbo.DataTextField = "Display";
         cbo.DataBind();
    

    但我找不到一种方法来获得价值。我知道DropDownList有selectedValue,但它返回一个字符串而不是我的对象类型…

         MyObjectType myObj = (MyObjectType)this.cbo.SelectedValue;//Err! Return a String
    

    如何从DropDownList获取对象?

    3 回复  |  直到 15 年前
        1
  •  2
  •   Patrick Desjardins    15 年前

    我认为你应该能做到以下几点

    MyObjectType myObj = (MyObjectType)this.cboTimeArea.SelectedItem.Value;
    

    但如果不是这样,以下内容就可以了

    MyObjectType myObj = possibleChoice[this.cboTimeArea.SelectedIndex];
    
        2
  •  2
  •   Dave Mateer    15 年前

    我通常将ID的字符串表示形式存储为 SelectedValue ,然后在回发时从数据存储区(缓存、会话数据、数据库、视图状态等,无论什么都是适当的)中获取对象,即在重新构建 possiblechoices .

        3
  •  2
  •   Kirschstein    15 年前

    这个 DropDownList 不存储数据绑定到它的对象。

    最好将dataValueField指定为对象的ID,然后可以这样做:

     cbo.DataSource = possibleChoice;
     cbo.DataValueField = "Id";
     cbo.DataTextField = "Display";
     cbo.DataBind();
    
     var userChoice = possibleChoice
                          .Where(x => x.Id == Convert.ToInt(cbo.SelectedValue));
    
    推荐文章