/// <summary>
    /// 显示大类
    /// </summary>
    private void DisplayDL()
    {
        ddlDL.DataSource = FenLeiManager.GetFenLeiByUid(0);
        ddlDL.DataTextField = "BoardCaption";
        ddlDL.DataValueField = "uid";
        ddlDL.DataBind();
    }
 /// <summary>
    /// 显示中类
    /// </summary>
    private void DisplayZL()
    {
        ddlZL.DataSource = FenLeiManager.GetFenLeiByUid(int.Parse(ddlDL.SelectedItem.Value));
        ddlZL.DataTextField = "BoardCaption";
        ddlZL.DataValueField = "uid";
        ddlZL.DataBind();
    }    /// <summary>
    /// 显示小类
    /// </summary>
    private void DisplayXL()
    {
        ddlXL.DataSource = FenLeiManager.GetFenLeiByUid(int.Parse(ddlZL.SelectedItem.Value));
        ddlXL.DataTextField = "BoardCaption";
        ddlXL.DataValueField = "uid";
        ddlXL.DataBind();
    }
页面3个DropDownList.在什么时候绑定合适?
还有我想第二个DropDownList随第一个DropDownList的内容而改变。第三个随第二个的值改变。
应该怎么写。是不是每个DropDownList都要加AutoPostBack="true".
可能表达的不清楚,效果就是像城市下拉框一样。

解决方案 »

  1.   

    对的,前两个要加AutoPostBack="true",最后一个就不要加了,因为他改变后不要刷新触发程序了(如果你要执行代码,那就加)!
    至于绑定,第一个要在page_load里
    if(!Page.IsPostBack)
    {
    //这里绑定
    }
    其他两个,要在你DropDownList改变后触发修改了
      

  2.   

    是TextChange事件吗?
    我每个默认的都添加了 ddlDL.Items.Insert(0, new ListItem("请选择", "请选择"));
    然后我获取上一次选中的Value值时用
    int.Parse(ddlDL.SelectedItem.Value))可以吗?报数组越界
      

  3.   

    DropDownList 无刷新联动
    http://blog.csdn.net/Sandy945/archive/2009/06/29/4307710.aspx
      

  4.   

    1.在PageLoad()里面绑定即可;
    2.<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack ="true" 
                onselectedindexchanged="DropDownList1_SelectedIndexChanged" >
            </asp:DropDownList>
       后台:
        protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
        {
            BindDropDownList2();
        }
     3.要加AutoPostBack ="true" 
      

  5.   

    获取上一级选中的Value应该怎么写?
      

  6.   

    int.Parse(ddlDL.SelectedItem.Value))后面多了个括号吧,另外如果是选中你默认添加的value:"请选择"的话,不会强制转换为int型。
      

  7.   

    1.在page_load中
    if(!Page.IsPostBack) 

    //这里绑定 
    } 2.前两个要加AutoPostBack="true",
    第一个DropDownList1控件的SelectedIndexChanged事件中绑定第二个和第三个
    第二个DropDownList2控件的SelectedIndexChanged事件中绑定第三个如果想不刷新就把这三个控件放在ajax的updatepanel内,(记得加上一个scriptmanager控件)
      

  8.   

    AutoPostBack="true". 
    selectindexChange事件重新绑定就OK的
      

  9.   

    这个要在每个 控件.DataBind(); 后添加。new ListItem里面的一个是Value,一个是Text   如果两个都是”请选择“,因为被转换的不是数字而是字符串,所以int.Parse(ddlDL.SelectedItem.Value 转换的时候肯定会出错。
     ddlDL.Items.Insert(0, new ListItem("0","请选择")); 
      

  10.   


    1.在PageLoad()里面绑定即可; 
    2. <asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack ="true" 
                onselectedindexchanged="DropDownList1_SelectedIndexChanged" > 
            </asp:DropDownList> 
      后台: 
        protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e) 
        { 
            BindDropDownList2(); 
        } 
    3.要加AutoPostBack ="true" 
    简单的作法就是在第二个dropdownlist里获取第一个dropdownlist里的value值,然后进行绑定
      

  11.   


    UpdatePanel工具箱有,但是拖不进?用不了。怎么回事
      

  12.   

    没有添加AjaxControlToolkit.dll引用吧