点一个btn,然后手动绑定同页面的ddl,不能刷新,能用什么办法,各位

解决方案 »

  1.   

    http://www.51aspx.com/CV/DadaAjaxProSamples/
      

  2.   

    可以用UpdatePanel也可以用ajax控件<cc1:CascadingDropDown...
      

  3.   

    将btn和dropdonwlist都包在UpdatePanel中就好了
      

  4.   

    对,AJAX技术,建议不要去学习AJAX技术,在C#没有学的很精通的情况,要不你绝对会晕死的,问题会源源不断和病毒一样,因为你还用控件自动绑顶,就知道技术一般,你的程序估计不大,如果是大型程序,老这样自动绑顶,虽然速度快,但是会出现问题,最后很无奈,全部推翻全部手写绑顶。
      

  5.   

    可以自己手写ajax xmlhttprequest
      

  6.   


    然后在btn的click事件里写 绑定ddl的代码
    就不会刷新了自己搜一下UpdatePanel怎么用吧
      

  7.   

    吧你的dropdonwlist 和BTN放在UpdatePanel 里面就可以了啊。。
     是在不行。搜索一下UpdatePanel 的使用方法就可以了
      

  8.   

    前台:<body>
        <form id="form1" runat="server">
        <div>
            <asp:ScriptManager ID="sm1" runat="server">
            </asp:ScriptManager>
            <asp:UpdatePanel ID="up1" runat="server">
                <ContentTemplate>
                    <asp:Button ID="btnBind" runat="server" Text="BindData" OnClick="Bind_Data" />
                    <asp:DropDownList ID="ddl1" runat="server">
                    </asp:DropDownList>
                </ContentTemplate>
            </asp:UpdatePanel>
        </div>
        </form>
    </body>后台: protected void Bind_Data(object sender, EventArgs e)
        {
            DataTable dt = this.GetData();
            this.ddl1.DataSource = dt;
            this.ddl1.DataValueField = "key";
            this.ddl1.DataTextField = "value";
            this.ddl1.DataBind();
        }    private DataTable GetData()
        {
            DataTable dt = new DataTable();
            dt.Columns.Add("key", typeof(string));
            dt.Columns.Add("value", typeof(string));        DataRow dr = null;
            for (int i = 0; i < 10; i++)
            {
                dr = dt.NewRow();
                dr[0] = i;
                dr[1] = "value" + i;
                dt.Rows.Add(dr);
            }        return dt;
        }
      

  9.   

    xmlhttp异步获取+javascript最好,适用于各种无刷新读取数据,updatepanel不是什么都能行的。
      

  10.   

    DropDownListDepartment为DDL,Button点击后让它执行btclick()。首先给你的button添加一个onClientClick="btclick()"
    Javascript代码:var xmlhttp;function btclick()
    {
        if(window.ActiveXObject)
        {
        xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
        }
        else if(window.XMLHttpRequest)
        {
        xmlhttp=new XMLHttpRequest();
        }
        xmlhttp.onreadystatechange=statechange;
        xmlhttp.open("POST","DataPage.aspx,true);
        xmlhttp.send();
    }function changeDDL()
    {
            var dropdownlist=document.getElementById('DropDownListDepartment');
            //清空原有项
            while(dropdownlist.options.length>0)
            {
            dropdownlist.remove(0);
            }
            document.getElementById('DropDownListDepartment').options.add(new Option("全部","0"));//给dropdownlist添加全部
            //分割字符,加载数据到dropdownlist
            var grop=new Array();
            grop=retext.split(";");//首先按;分组,每组是一个ID+Name,用,隔开
            //document.getElementById('mydiv').innerHTML=grop.toString();
            var len=grop.length;
            for(i=0;i<len-1;i++)
            {
            var temp=grop[i];
            var obj=new Array();
            obj = temp.split(",");//按,分组,把ID何Name都分开来。
            val=obj[0];//值
            txt=obj[1];//文本    
            document.getElementById('DropDownListDepartment').options.add(new Option(txt,val));//给dropdownlist添加数据
            }
    }function statechange()
    {
        if(xmlhttp.readyState==4)
        {
        if(xmlhttp.status==200||xmlhttp.status==0)
        {
            var retext=xmlhttp.responseText;
            changeDDL(retext);
        }
        }
    }
    需要添加一个DataPage.aspx,写你的数据获取代码在这个页(需要引用using System.Data.SqlClient;
    using System.Text;):protected void Page_Load(object sender, EventArgs e)
    {
    SqlConnection conn = new SqlConnection(@"Data Source=127.0.0.1\SQLEXPRESS;Initial Catalog=sample;User ID=mary;Password=1234;");            string cmdTex = "";
                    cmdTex = "select departmentID,departmentName from Department";
                SqlCommand cmd = new SqlCommand(cmdTex, conn);
                SqlDataAdapter da = new SqlDataAdapter();
                da.SelectCommand = cmd;
                DataTable dt = new DataTable();
                conn.Open();
                da.Fill(dt);
                conn.Close();            StringBuilder data = new StringBuilder();
                int len = dt.Rows.Count;
                for (int i = 0; i < len; i++)
                {
                    data.Append(dt.Rows[i][0].ToString() + "," + dt.Rows[i][1] + ";");
                }            Response.Write(data.ToString());
                Response.End();//防止了返回一大串HTML代码引发其他错误。
    }
      

  11.   

    也可以使用aps.net的 方法回調事件也可以的
      

  12.   

    <asp:ScriptManager ID="ScriptManager1" runat="server">
            </asp:ScriptManager>
        <div>
            <asp:UpdatePanel ID="UpdatePanel1" runat="server">
                <ContentTemplate>
     <asp:Button ID="btn" runat="server" Text="btn" />
    <asp:DropDownList id="ddl" runat="server"></asp:DropDownList>
       </ContentTemplate>
            </asp:UpdatePanel>

     <asp:Button ID="btn" runat="server" onClientClick="A()" Text="btn" />
    function A()

    AjaxMethod.GetList(get_Result);
    }
    function get_Result(response)
    {
    if (response.value != null)
    {
    document.all("ddl").length=0;    
                           var ds = response.value;
    if(ds != null && typeof(ds) == "object")
    {
    for(var i=0; i<ds.Tables[0].Rows.length; i++)
         {
         var name=ds.Tables[0].Rows[i].City;
           var id=ds.Tables[0].Rows[i].City;
           document.all("ddl").options.add(new Option(name,id));
         }
    }
    }
    return
    }
    }