none
asp.net callback问题 RRS feed

  • 问题

  • 小弟目前正在研习asp.net的callback机制,但是现在遇到了一点问题,无论是msdn的例程,还是书上的程序,在callback的时候,都无法拿到控件的最新值。比如:我有2个dropdownlist,我的需求是当dropdownlist1的selectindex变化的时候,根据所选择的selectedValue来初始化dropdownlist2,可是调试的时候,拿到的却总是dropdownlist1的初始值,请问一下各位高手,这是怎么回事?
    2010年9月15日 8:23

答案

  • 你好,你提供的办法,我以前都这样做,不过这不是我的初衷,呵呵。

    你在定义控件时选择AutoPostBack="true",这样作的后果就是当dropdownlist1的选择发生变化时,aspx页面就刷新了,在IE里看到的结果就是“后退”按钮可以用了。如果我的需求是根据若干个级联的

    dropdownlist筛选之后再来提交查询的话,那么,就表示可能我还没有真正去点击“查询”按钮的时候,页面已经刷新了好几次了。

    我的初衷是利用ajax的原理,就是异步刷新,即整张页面不postback的同时,还能局部更新我想要更新的控件,呵呵,我想,这样应该也是ms的callback的机制。

    感谢你的回复。

    你是想用AJAX实现局部无刷新级联菜单那种的吧。最简单的方法就是使用ajax.net控件。

    方法二:

    <DIV id=ListClassDiv style=" padding-top:25px; width: 90%;">
       <asp:ListBox id="ListBox1" Height="239px" Width="200px" style="background-color: #49A3D7" runat="server" ></asp:ListBox>
       <asp:ListBox id="ListBox2"  Height="239px" Width="200px" style="background-color: #49A3D7" runat="server"></asp:ListBox>
       <asp:ListBox id="ListBox3" Height="239px" Width="200px" style="background-color: #49A3D7" runat="server"></asp:ListBox>

    </DIV>

     

    using System;
    using System.Data;
    using System.Configuration;
    using System.Collections;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;
    using System.Data.SqlClient;

    public partial class SelectGame : System.Web.UI.Page
    {


        Application app = new Application();
       
        protected void Page_Load(object sender, EventArgs e)
        {

            if (!this.IsPostBack)
            {
               

                this.down1_bind();
                this.ListBox1.Attributes.Add("onchange", "XmlPost2(this);");
                this.ListBox2.Attributes.Add("onchange", "XmlPost3(this);");



               
            }


            if (GameId != "")
            {
                this.down2_bind(GameId);
            }
            if (AreaId != "")
            {
                this.down3_bind(AreaId);
            }

           
        }




        #region down1_bind
        private void down1_bind()
        {
            string sql = "select GameId,Game from tb_Game";
            DataSet ds = OperateDB.GetDataSet(sql, CommandType.Text, "tb_game");
            this.ListBox1.DataSource = ds;
            this.ListBox1.DataValueField = "GameId";
            this.ListBox1.DataTextField = "Game";
            this.ListBox1.DataBind();


        }

        #endregion



        #region  定义了两个属性
        private string GameId
        {
            get
            {
                if (ViewState["GameId"] != null && ViewState["GameId"].ToString() != "")
                {
                    return ViewState["GameId"].ToString();
                }
                else
                {
                    if (Request["GameId"] != null && Request["GameId"].ToString() != "")
                    {
                        return Request["GameId"];
                    }
                    else
                    {
                        return "";
                    }
                }
            }
            set
            {
                ViewState["GameId"] = value;
            }
        }
        private string AreaId
        {
            get
            {
                if (ViewState["AreaId"] != null && ViewState["AreaId"].ToString() != "")
                {
                    return ViewState["AreaId"].ToString();
                }
                else
                {
                    if (Request["AreaId"] != null && Request["AreaId"].ToString() != "")
                    {
                        return Request["AreaId"];
                    }
                    else
                    {
                        return "";
                    }
                }
            }
            set
            {
                ViewState["AreaId"] = value;
            }
        }
        #endregion


        #region down2_bind
        private void down2_bind(string id)
        {
            string mystr = "";
            string sql = "select AreaId,Area from tb_Area where GameId = '" + id + "'";
            DataSet ds = OperateDB.GetDataSet(sql,CommandType.Text,"tb_area");

            if (ds.Tables[0].Rows.Count != 0)
            {
                for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
                {
                    mystr += "," + ds.Tables[0].Rows[i][0].ToString() + "|" + ds.Tables[0].Rows[i][1].ToString();
                }
                mystr = mystr.Substring(1);
            }
            this.Response.Write(mystr);
            this.Response.End();
        }
        #endregion



        #region down3_bind
        private void down3_bind(string id)
        {
            string mystr = "";
            string sql = "select ServerId,Server from tb_Server where AreaId = '" + id + "'";
            DataSet ds = OperateDB.GetDataSet(sql, CommandType.Text, "tb_Server");

            if (ds.Tables[0].Rows.Count != 0)
            {
                for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
                {
                    mystr += "," + ds.Tables[0].Rows[i][0].ToString() + "|" + ds.Tables[0].Rows[i][1].ToString();
                }
                mystr = mystr.Substring(1);
            }
            this.Response.Write(mystr);
            this.Response.End();
        }

    }

     

     

    JS代码如下:

            //创建xmlHttp对象
           function createXMLHTTP()
                {
                var xmlHttp=null;
                      try
                      {
                      xmlHttp=new ActiveXObject("MSXML2.XMLHTTP");
                      }
                      catch(e)
                      {
                      try
                      {
                      xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
                      }
                      catch(e2)
                      {
                     // xmlHttp=false;
                      }
                      }
                     if(!xmlHttp && typeof XMLHttpRequest!='undefined')
                      {
                      try
                      {
                      xmlHttp=new XMLHttpRequest();
                      }
                      catch(e)
                      {
                     // xmlHttp=false;
                      }
                       
                      }
                      return xmlHttp;
                }



                    //以XML求取ListBox2的数据
                    function XmlPost2(obj)
                    {
                   
                   
                   
                        var select=document.getElementById("ListBox1"); //获取控件对象
                  
                        //document.getElementById("ListBox3").style.display='none';


                 
                   if(navigator.appName.indexOf("Explorer") > -1)
                   {

                          
                        document.getElementById("ListBox3").innerText="";//清除listbox3中的值 
                        }
                        else
                        {
                           
                        document.getElementById("ListBox3").textContent="";//清除listbox3中的值
                        }


                    var svalue = obj.value;
                    var webFileUrl = "?GameId=" + svalue;
                    var result = "";
                   var xmlHttp=createXMLHTTP();

                    xmlHttp.open("POST", webFileUrl, false);
                    xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
                    xmlHttp.send(null);
                    result = xmlHttp.responseText;
                       
                    if(result != "")
                    {
                    document.all("ListBox2").length=0;
                    var piArray=new Array();//数字定义
                    var piArray = result.split(",");
                    for(var i=0;i<piArray.length;i++)
                    {
                    var ary1 = piArray[i].toString().split("|");
                 
                    document.all("ListBox2").options.add(new Option(ary1[1].toString(),ary1[0].toString()));
                    }
                    }
                    else
                    {
                    //throw new Error("Something bad happened.")
                     throw(e);
    //                    alert('没有数据');
                    }
                   
                   
                    }
                    //以XML求取ListBox3的数据
                    function XmlPost3(obj)
                    {
                   
                    var select=document.getElementById("ListBox2");
                  

                    var svalue = obj.value;
                    var webFileUrl = "?AreaId=" + svalue;
                    var result = "";
                    var xmlHttp = createXMLHTTP();
               
                    xmlHttp.open("POST", webFileUrl, false);
                     xmlHttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
                    xmlHttp.send("");
                   
                    result = xmlHttp.responseText;
                   
                   
                   
                
                
                    if(result != "")
                    {
                    document.all("ListBox3").length=0;
                    var piArray = result.split(",");
                    for(var i=0;i<piArray.length;i++)
                    {
                    var ary1 = piArray[i].toString().split("|");
                  
                    document.all("ListBox3").options.add(new Option(ary1[1].toString(),ary1[0].toString()));
                    }
                    }
                    else
                    {
                    alert(result);
                    }
                    }               
              

    实现效果如图:


    【煜诚海参】http://jinweb.taobao.com
    • 已标记为答案 luluilu 2010年9月20日 9:50
    2010年9月20日 6:54

全部回复

  • 你在页面的page_load里面加入if(!ispostback)判断


    http://blog.csdn.net/zx13525079024
    2010年9月15日 9:38
  • 我加入过了,下面是我的代码:

    if (!IsPostBack)
            {
                strSql = "select distinct stulevel, stulevel from ExamSchedules where exambatch = (select exambatch from m_examdate where isavailable = 1)";
                DB d = new DB();
                d.BindDrop(strSql, DropDownList1);

                string cbReference = Page.ClientScript.GetCallbackEventReference(this"arg""ReceiveServerData""context");
                string cbScript = "function UseCallback(arg, context)" +"{" + cbReference + ";" + "}";
                Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "UseCallback", cbScript, true);
            }
    2010年9月15日 9:40
  • 检查下上不上你数据库数据的问题,数据库中读取到数据有多少条,
    http://blog.csdn.net/zx13525079024
    2010年9月16日 4:43
  • 数据库的链接没有问题,我的需求是这样:两个dropdownlist,第一个就是通过上面程序里面的sql来获取数据并且填充,然后根据用户选择的第一个dropdownlist的值,来做后续的操作。举个例子,比如第一个dorpdownlist是省的集合,那么,我要根据用户选择了哪个省,把省的id通过callback传给后台程序,然后根据这个id来获取这个省的地级市。

    当我初始化省的dropdownlist之后,第一项是“请选择省”,第二项是“北京”等等,当我选择“北京”从而激发dropdownlist的onchange()的时候,我在后台程序中得到的永远都是“请选择省”,而不是我所选择的“北京”所对应的id,苦恼的是这里。

    感谢你一直以来的回答,谢谢。

    2010年9月17日 10:25
  • 你应该再次绑定一下第二个dropdownlist从第一个控件传递过来的值
    【煜诚海参】http://jinweb.taobao.com
    2010年9月18日 14:17
  • 这位兄弟,我就是要根据第一个dropdownlist所传过来的值来从数据库中查询数据,从而绑定到第二个dropdownlist呢。

    如果我说的跟你说的不是一个意思,那么恕我愚钝,没有正确领悟你的意思,麻烦你说清楚一些,谢谢。

    2010年9月19日 7:27
  • 你好

    或者你可以嘗試用 AjaxControlToolKits 的CascadingDropDown

    http://www.asp.net/ajaxlibrary/act_CascadingDropdown.ashx

    應該可以實現這個效果

    Please correct me if my concept is wrong

     


    Chi
    2010年9月19日 7:48
  • 首先感谢你提供的另一种解决方案。

    你的这个,我看了,没有尝试,不过我想应该是可以的,但是我还是想知道为什么我的代码得不到我想要的值呢?而且都是我从书上抄下来的呢。

    2010年9月19日 8:33
  • 你好

    或者你可以把你的Code Post 上來給我們參考看看那一部份出現問題

     


    Chi
    2010年9月19日 11:41
  • 针对你的问题我做了一个小小的测试。这里数据库设计不在考虑范围内。只设计代码部分

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="test.aspx.cs" Inherits="test" %>

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
        <title>无标题页</title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            <asp:DropDownList ID="game" runat="server" OnSelectedIndexChanged="game_SelectedIndexChanged" AutoPostBack="true">
            <asp:ListItem Value="0" >请选择游戏</asp:ListItem>
            </asp:DropDownList>
            <asp:DropDownList ID="area" runat="server">
            <asp:ListItem Value="0" >请选择区域</asp:ListItem>
            </asp:DropDownList>

        </form>
    </body>
    </html>

     

     

    using System;
    using System.Data;
    using System.Configuration;
    using System.Collections;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;
    using System.Data.SqlClient;


    public partial class test : System.Web.UI.Page
    {
        Application App = new Application();
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!this.IsPostBack)
            {
                GameBand();

            }
        }

        private void GameBand()
        {
            using (SqlConnection con = OperateDB.GetConnection())
            {
                con.Open();
                SqlDataReader sdr = OperateDB.GetSqlDataReader("select gameid,game from tb_game");
                while (sdr.Read())
                {
                    this.game.Items.Add(new ListItem(sdr["game"].ToString(), sdr["gameid"].ToString()));
                }
                sdr.Close();
            }

        }
        protected void game_SelectedIndexChanged(object sender, EventArgs e)
        {
            string _gameid = this.game.SelectedValue;
            using (SqlConnection con = OperateDB.GetConnection())
            {
                con.Open();
                SqlDataReader sdr = OperateDB.GetSqlDataReader("select areaid,area from tb_area where gameid='" + _gameid + "' ");
                this.area.DataSource = sdr;
                this.area.DataTextField = "area";
                this.area.DataValueField = "areaid";
                this.area.DataBind();


            }
        }
    }

     

    效果如图所示:

     

     

    得到第二个图效果的时候页面刷新了,同时也保存了第一个下拉框选定值与选中后激发postback后的第二个下拉框的值。请参考我的代码与你代码哪里有所不同?

     

     

     

     


    【煜诚海参】http://jinweb.taobao.com
    2010年9月19日 14:51
  • 是不是没有激发dropdownlist的SelectedIndexChanged事件,同时要设置AutoPostBack="True"

    第一次加载时默认的是dropdownlist第一项的值,你后面选择其他项时应该要通过SelectedIndexChanged事件(通过设置AutoPostBack="true"自动激发这次事件)来传值进行绑定。

    2010年9月20日 3:03
  • 你好,你提供的办法,我以前都这样做,不过这不是我的初衷,呵呵。

    你在定义控件时选择AutoPostBack="true",这样作的后果就是当dropdownlist1的选择发生变化时,aspx页面就刷新了,在IE里看到的结果就是“后退”按钮可以用了。如果我的需求是根据若干个级联的

    dropdownlist筛选之后再来提交查询的话,那么,就表示可能我还没有真正去点击“查询”按钮的时候,页面已经刷新了好几次了。

    我的初衷是利用ajax的原理,就是异步刷新,即整张页面不postback的同时,还能局部更新我想要更新的控件,呵呵,我想,这样应该也是ms的callback的机制。

    感谢你的回复。

    2010年9月20日 3:20
  • 我自定义了OnChange事件,在调试的时候,可以用过callback机制返回到后台CS代码中,只是拿不到控件值让我很郁闷。
    2010年9月20日 3:21
  • 微软自带的AJAX控件updatepanel可实现局部刷新

    如果你要找出问题 建议你把你的onchange事件的代码也贴出来

    2010年9月20日 3:51
  • 你好,你提供的办法,我以前都这样做,不过这不是我的初衷,呵呵。

    你在定义控件时选择AutoPostBack="true",这样作的后果就是当dropdownlist1的选择发生变化时,aspx页面就刷新了,在IE里看到的结果就是“后退”按钮可以用了。如果我的需求是根据若干个级联的

    dropdownlist筛选之后再来提交查询的话,那么,就表示可能我还没有真正去点击“查询”按钮的时候,页面已经刷新了好几次了。

    我的初衷是利用ajax的原理,就是异步刷新,即整张页面不postback的同时,还能局部更新我想要更新的控件,呵呵,我想,这样应该也是ms的callback的机制。

    感谢你的回复。

    你是想用AJAX实现局部无刷新级联菜单那种的吧。最简单的方法就是使用ajax.net控件。

    方法二:

    <DIV id=ListClassDiv style=" padding-top:25px; width: 90%;">
       <asp:ListBox id="ListBox1" Height="239px" Width="200px" style="background-color: #49A3D7" runat="server" ></asp:ListBox>
       <asp:ListBox id="ListBox2"  Height="239px" Width="200px" style="background-color: #49A3D7" runat="server"></asp:ListBox>
       <asp:ListBox id="ListBox3" Height="239px" Width="200px" style="background-color: #49A3D7" runat="server"></asp:ListBox>

    </DIV>

     

    using System;
    using System.Data;
    using System.Configuration;
    using System.Collections;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;
    using System.Data.SqlClient;

    public partial class SelectGame : System.Web.UI.Page
    {


        Application app = new Application();
       
        protected void Page_Load(object sender, EventArgs e)
        {

            if (!this.IsPostBack)
            {
               

                this.down1_bind();
                this.ListBox1.Attributes.Add("onchange", "XmlPost2(this);");
                this.ListBox2.Attributes.Add("onchange", "XmlPost3(this);");



               
            }


            if (GameId != "")
            {
                this.down2_bind(GameId);
            }
            if (AreaId != "")
            {
                this.down3_bind(AreaId);
            }

           
        }




        #region down1_bind
        private void down1_bind()
        {
            string sql = "select GameId,Game from tb_Game";
            DataSet ds = OperateDB.GetDataSet(sql, CommandType.Text, "tb_game");
            this.ListBox1.DataSource = ds;
            this.ListBox1.DataValueField = "GameId";
            this.ListBox1.DataTextField = "Game";
            this.ListBox1.DataBind();


        }

        #endregion



        #region  定义了两个属性
        private string GameId
        {
            get
            {
                if (ViewState["GameId"] != null && ViewState["GameId"].ToString() != "")
                {
                    return ViewState["GameId"].ToString();
                }
                else
                {
                    if (Request["GameId"] != null && Request["GameId"].ToString() != "")
                    {
                        return Request["GameId"];
                    }
                    else
                    {
                        return "";
                    }
                }
            }
            set
            {
                ViewState["GameId"] = value;
            }
        }
        private string AreaId
        {
            get
            {
                if (ViewState["AreaId"] != null && ViewState["AreaId"].ToString() != "")
                {
                    return ViewState["AreaId"].ToString();
                }
                else
                {
                    if (Request["AreaId"] != null && Request["AreaId"].ToString() != "")
                    {
                        return Request["AreaId"];
                    }
                    else
                    {
                        return "";
                    }
                }
            }
            set
            {
                ViewState["AreaId"] = value;
            }
        }
        #endregion


        #region down2_bind
        private void down2_bind(string id)
        {
            string mystr = "";
            string sql = "select AreaId,Area from tb_Area where GameId = '" + id + "'";
            DataSet ds = OperateDB.GetDataSet(sql,CommandType.Text,"tb_area");

            if (ds.Tables[0].Rows.Count != 0)
            {
                for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
                {
                    mystr += "," + ds.Tables[0].Rows[i][0].ToString() + "|" + ds.Tables[0].Rows[i][1].ToString();
                }
                mystr = mystr.Substring(1);
            }
            this.Response.Write(mystr);
            this.Response.End();
        }
        #endregion



        #region down3_bind
        private void down3_bind(string id)
        {
            string mystr = "";
            string sql = "select ServerId,Server from tb_Server where AreaId = '" + id + "'";
            DataSet ds = OperateDB.GetDataSet(sql, CommandType.Text, "tb_Server");

            if (ds.Tables[0].Rows.Count != 0)
            {
                for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
                {
                    mystr += "," + ds.Tables[0].Rows[i][0].ToString() + "|" + ds.Tables[0].Rows[i][1].ToString();
                }
                mystr = mystr.Substring(1);
            }
            this.Response.Write(mystr);
            this.Response.End();
        }

    }

     

     

    JS代码如下:

            //创建xmlHttp对象
           function createXMLHTTP()
                {
                var xmlHttp=null;
                      try
                      {
                      xmlHttp=new ActiveXObject("MSXML2.XMLHTTP");
                      }
                      catch(e)
                      {
                      try
                      {
                      xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
                      }
                      catch(e2)
                      {
                     // xmlHttp=false;
                      }
                      }
                     if(!xmlHttp && typeof XMLHttpRequest!='undefined')
                      {
                      try
                      {
                      xmlHttp=new XMLHttpRequest();
                      }
                      catch(e)
                      {
                     // xmlHttp=false;
                      }
                       
                      }
                      return xmlHttp;
                }



                    //以XML求取ListBox2的数据
                    function XmlPost2(obj)
                    {
                   
                   
                   
                        var select=document.getElementById("ListBox1"); //获取控件对象
                  
                        //document.getElementById("ListBox3").style.display='none';


                 
                   if(navigator.appName.indexOf("Explorer") > -1)
                   {

                          
                        document.getElementById("ListBox3").innerText="";//清除listbox3中的值 
                        }
                        else
                        {
                           
                        document.getElementById("ListBox3").textContent="";//清除listbox3中的值
                        }


                    var svalue = obj.value;
                    var webFileUrl = "?GameId=" + svalue;
                    var result = "";
                   var xmlHttp=createXMLHTTP();

                    xmlHttp.open("POST", webFileUrl, false);
                    xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
                    xmlHttp.send(null);
                    result = xmlHttp.responseText;
                       
                    if(result != "")
                    {
                    document.all("ListBox2").length=0;
                    var piArray=new Array();//数字定义
                    var piArray = result.split(",");
                    for(var i=0;i<piArray.length;i++)
                    {
                    var ary1 = piArray[i].toString().split("|");
                 
                    document.all("ListBox2").options.add(new Option(ary1[1].toString(),ary1[0].toString()));
                    }
                    }
                    else
                    {
                    //throw new Error("Something bad happened.")
                     throw(e);
    //                    alert('没有数据');
                    }
                   
                   
                    }
                    //以XML求取ListBox3的数据
                    function XmlPost3(obj)
                    {
                   
                    var select=document.getElementById("ListBox2");
                  

                    var svalue = obj.value;
                    var webFileUrl = "?AreaId=" + svalue;
                    var result = "";
                    var xmlHttp = createXMLHTTP();
               
                    xmlHttp.open("POST", webFileUrl, false);
                     xmlHttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
                    xmlHttp.send("");
                   
                    result = xmlHttp.responseText;
                   
                   
                   
                
                
                    if(result != "")
                    {
                    document.all("ListBox3").length=0;
                    var piArray = result.split(",");
                    for(var i=0;i<piArray.length;i++)
                    {
                    var ary1 = piArray[i].toString().split("|");
                  
                    document.all("ListBox3").options.add(new Option(ary1[1].toString(),ary1[0].toString()));
                    }
                    }
                    else
                    {
                    alert(result);
                    }
                    }               
              

    实现效果如图:


    【煜诚海参】http://jinweb.taobao.com
    • 已标记为答案 luluilu 2010年9月20日 9:50
    2010年9月20日 6:54
  • 感谢各位热心的回答,在你们的提示下,我终于找到了问题的所在。问题出在js上面。我就只贴出我aspx的codebehind的CS代码的部分:

     

    protected void Page_Load(object sender, EventArgs e)
    {
        if (IsCallback)
          return;
    
        if (!IsPostBack)
        {
          strSql = "select state, stateid from statelist";
          DB d = new DB();
          d.BindDrop(strSql, dropState);
    
          string FirstDropDownCallbackScript = Page.ClientScript.GetCallbackEventReference(this, "document.getElementById('dropState').value", "ReceiveServerData", "null");
          dropState.Attributes["onchange"] = FirstDropDownCallbackScript;
        }
      }
    

    问题就在于定义FirstDropDownCallbackScript的时候,里面的JS要写成 “document.getElementById('...').value”,我之前按照MS网站的例子,写 成"document.all['drpEmployeeId'].value",别的浏览器是压根就拿不到arg的值,IE8下arg终于不为空了,但 是确是我之前所说的初始化的值。

    问题总算解决了,衷心的感谢各位的帮助和建议,谢谢。

     

    2010年9月20日 9:49
  • 你好,你提供的办法,我以前都这样做,不过这不是我的初衷,呵呵。

    你在定义控件时选择AutoPostBack="true",这样作的后果就是当dropdownlist1的选择发生变化时,aspx页面就刷新了,在IE里看到的结果就是“后退”按钮可以用了。如果我的需求是根据若干个级联的

    dropdownlist筛选之后再来提交查询的话,那么,就表示可能我还没有真正去点击“查询”按钮的时候,页面已经刷新了好几次了。

    我的初衷是利用ajax的原理,就是异步刷新,即整张页面不postback的同时,还能局部更新我想要更新的控件,呵呵,我想,这样应该也是ms的callback的机制。

    感谢你的回复。


    要么利用js写一些真正的ajax

    要么把那几个dropdown放到updatepanel里

    2010年9月21日 14:33
  • 是,经过这一次,我觉得还是成熟的ajax框架比较靠谱。

    2010年9月21日 17:02