【问题标题】:EntityDataSource and DropDownEntityDataSource 和 DropDown
【发布时间】:2012-06-07 07:06:55
【问题描述】:

我的项目中有两个从 EntityDataSource 绑定的下拉列表。第二个 Dropdownlist 必须基于第一个 DropDownlist 绑定。我该怎么做?

【问题讨论】:

    标签: asp.net linq entity-framework linq-to-sql entity-framework-4


    【解决方案1】:

    假设 Entity1 的 ID、Name 为属性,Entity2 的 ID、Entity1ID、OrderNumber 为属性。

    绑定

    `Dropdownlist1.Datasource = list(of Entity1)
     Dropdownlist1.DataValueField = "ID"
     Dropdownlist1.DataTextField = "Name"
     Dropdownlist1.databind()`
    

    在 dropdownlist1 的 selectedvalue 更改事件中,检查用户是否选择了有效值,然后从 Entity2 数据源中进行 linq 搜索并将其绑定到 Dropdownlist2。

    您也可以使用 Avani 提到的级联下拉列表。

    【讨论】:

      【解决方案2】:

      如果您不需要回发,您可以这样做:

      <select id="s1" >
          <option>-----</option>
          <option>item 1</option>
          <option>item 2</option>
          <option>item 3</option>
      </select>
      
      <br />
      
      <select id="s2" >
      </select>​
      
      <script type="text/javascript">
          var s1 = document.getElementById("s1");
          var s2 = document.getElementById("s2");
      
          s1.onchange = function () {
              s2.options.length = 0;
              var value = this.value;
      
              if (value != "-----") {
                  var opt = document.createElement("OPTION");
                  opt.text = "sub " + value;
                  opt.value = "sub " + value;
                  s2.options.add(opt);
              }
          }
      </script>
      

      或者您可以在服务器端执行相同类型的逻辑,但这会将回发带到现场。

      【讨论】:

        【解决方案3】:

        如果你使用的是ASP.net AJAX,AJAX控件工具包中有一个控件叫做“Cascading DropDown”,你可以使用它。

        MS Sample

        【讨论】:

          猜你喜欢
          • 2014-11-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-05-24
          • 1970-01-01
          相关资源
          最近更新 更多