前台:
<script language="javascript" type="text/javascript">
function SearchData()
{
    //显示后台获得的数据
    var ds=Search().value;    //利用Ajax,调用后台函数获得DataSet
    ....
   return false;
}
</script><asp:button id="btnSearch" CssClass="Button" Runat="server" Text="btnSearch" onclick="btnSearch_Click" OnClientClick="return SearchData();"></asp:button>后台:
[Ajax.AjaxMethod()]
Public DataSet Search()
{
    //查询数据库,获得DataSet,查询时会用到其它控件属性
    //但是,程序运行到这里的时候完全得不到数据
    //例如:用到控件this.Textbox1.Text,但this.Textbox1=null
    //用到基类的某个属性时,也是为空null。
    //有那位大虾能能帮帮忙吗?
}

解决方案 »

  1.   

    当然,Ajax 回发时仅提交 注册方法的参数,并不提交页面!!!LZ 的 Search() 却没有任何参数!建议这么做 Search(txtUserName.value, ...) 当然 Server 端也要同步修改,而且还要有回调函数处理返回值!LZ 的代码差的太远,还是先看看基础知识吧!
      

  2.   

    前台:
    <script language="javascript" type="text/javascript">
    function SearchData()
    {
        var sUserCode=document.getElementById("<%=tbUsrCde.ClientID %>").value;
        var sUserName=document.getElementById("<%=tbUsrNm.ClientID %>").value;
        
        userinfosearch.SearchData(sUserCode,sUserName,SearchData_CallBack);
        
        return false;
    }function SearchData_CallBack(response)
    {
        if (response != null)
        {
            var ds=response.value;      //ds is a DataSet
            //利用ds填充表格UltraWebGrid,已达到无刷新页面更新表格
        }
    }
    </script>
    ...
    <asp:button id="btnSearch" CssClass="Button" Runat="server" Text="btnSearch" onclick="btnSearch_Click" OnClientClick="return SearchData();"></asp:button>后台:
    public class userinfosearch : ParentPage
    {
        [Ajax.AjaxMethod()]
        public DataSet SearchData(string sUserCode,string sUserName)
        {
            SqlConnection sqlConn = new SqlConnection ("连接串");
            sqlConn.Open();
            DataSet ds = new DataSet();
            string sql = "Select * From TB_Usr Where UsrCde like '%" + sUserCode + "%' and UsrNm like '%" + sUserName + "%'";
            SqlDataAdapter da = new SqlDataAdapter(sql, sqlConn);
            da.Fill(ds, "UserInfoSearch");
            DataTable UserInfoSearch;
            UserInfoSearch = ds.Tables["UserInfoSearch"];
            sqlConn.Close();
            return ds;
        }
    }
      

  3.   

    上面的代码可以实现我要的效果,但是这个项目的要求是不能把数据访问的代码写在类userinfosearch中!也就是说,类userinfosearch中的SearchData函数只能调用其它类(业务逻辑层、数据访问层)的方法。我试了下,发现在SearchData中没办法访问其它类的对象,都是= null。
        我刚接触Ajax没几天,希望有人能指点下我该怎么做,Ajax的书我也开始看,但时间实在紧迫,希望能尽快解决。谢谢!