我最近做一个页面 要求在textbox输入后 dropdownlist马上绑定数据。我开始是把 dropdownlist的数据绑定放在每次的
page_load事件里。可是在后面我dropdownlist_selectIndexChange事件又必须把ddl 设置成autopostback=true .这样就造成每次的ddl选择后 ddl返回的都是第一项。
    不知遇到与我同类问题的人是如何解决在必须通过page_load 事件来绑定ddl 的数据的要求下来解决。或者是有无可能在不设置autopostback=true 下 能完成 dropdownlist_selectIndexChange事件。

解决方案 »

  1.   

    用viewstart记录dropdownlist里被选中的值。
      

  2.   

     if (!IsPostBack)
     {
          if (viewstate["test"] != null)
           {
               dropdownlist.SelectedValue = viewstate["test"];
           }
    }
    protected void dropdownlist_selectIndexChange(object sender, EventArgs e)
    {
        viewstate["test"] = dropdownlist.SelectedValue;
    }
      

  3.   

    楼上代码明显有问题if (!IsPostBack)
     {
      if (viewstate["test"] != null)
      {
      dropdownlist.SelectedValue = viewstate["test"];
      }
    }
    dropdownlist.SelectedValue = viewstate["test"];
    这句永远不会被执行到
    如果回传就不会进第一层判断
    如果不会传Viewstate一直是null的
    所以楼上的代码是在凑字数么??
      

  4.   

    我现在很少用服务器控件了,除了Repeater和注册登录页面以外。我都是用js来提交的.
    不过我依稀感觉在我上学的时候应该出现过类似问题。
    用js提交简单多了<select onChange="change(this)"></select><script>
    change(obj)
    {
    var ddlValue = obj.value;
    location.href="default.aspx?ddl="+ddlValue;
    }
    </script>看看灰常简洁吧
      

  5.   

    3楼可能没看清我写的是!IsPostBack,而不是IsPostBack,意思是除第一次加载以外的所有次加载
      

  6.   

    IsPostBack
    PostBack是回传的意思
    IsPostBack是(是否回传的意思)
    !IsPostBack是(是否不会传的意思)
      

  7.   

    ........
    反正把你的page_load绑定的那段外加上
    if(!IsPostBack)
    {
    //..绑定
    }
    就OK了
      

  8.   

    很感谢大家的帮助,虽然我后来是把DDL的数据绑定放在另外的函数中解决的。不再通过PAGE_LOAD事件来绑定。但是大家给了我一些思路。我的解决方法是:
     通过TEXTBOX 的 TEXTCHANGE事件来 进行DDL 的数据绑定。