using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;namespace Web
{
    public partial class AjaxProTest : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            AjaxPro.Utility.RegisterTypeForAjax(typeof(Web.AjaxProTest));
        }        protected void Button1_Click(object sender, EventArgs e)
        {        }        [AjaxPro.AjaxMethod]
        public void ShowList()
        {
            Title = "asfdafdsasfd";
            for(int i = 1; i <= 10; i++)
                DropDownList1.Items.Add(i.ToString());
        }    }
}<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="AjaxProTest.aspx.cs" Inherits="Web.AjaxProTest" %><!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">
    <asp:DropDownList ID="DropDownList1" runat="server">
    </asp:DropDownList>
    <asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button" OnClientClick="return ShowList();" />
    </form>
</body>
</html>
<script type="text/javascript">
    function ShowList() {
        Web.AjaxProTest.ShowList();
        return false;
    }
</script>

解决方案 »

  1.   

    在JS函数中添加option
    或刷新页面
      

  2.   

    晕,全部要返回来再进行处理...晕了。
    这样太麻烦了吧。  微软的UpdatePanel不用这样的啊。
      

  3.   

    如果普通调用,能显示数据,不过刷新,用Js调用C#方法,可以调用,但数据不显示出来。
      

  4.   

            var ddl = document.getElementById("DropDownList1");
            var op = document.createElement("OPTION");
            op.text = "asfdafdsadsf";
            op.value = "1";
            ddl.appendChild(op);
    失败...没有内容的。
      

  5.   

    第一,在ajaxpro的后台方法中是不能控制服务器端控件
    第二,在前台你要分成两个函数写的呀function ShowList() {
            Web.AjaxProTest.ShowList(CallBackShowList);
        }
    function CallBackShowList(req) {
            //req.value是后台方法ShowList()的返回值
            if(req.error==null)//判断返回值是否有异常
            {
                //根据req.value进行界面上的操作
             }
        }第三,既然你用了ajaxpro,那你在页面上就要尽量使用客户端控件而非服务器端控件;
    实在不明白我可以再给你其他的代码看
      

  6.   

    微软的updatepanel虽然是万能的,但是一旦updatepanel里的控件以及操控的数据太多,它的响应就会很慢,而且updatepanel只能操控服务端控件,只会加重了服务器负载,ajaxpro是个好东西,配合jquery可以写出很好的效果,做web尽量少用服务器端控件;
      

  7.   

    function mm()
    {
    Web.AjaxProTest.ShowList();
    }
     <asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button" OnClientClick="return mm();" />试试
      

  8.   

    在页面上有两个下拉框控件
    // 选择年的控件
    <select id="slYear" style="width:100px;" onchange="SelectYear(this);">
         <option>请选择</option>
         <option value="2008">2008</option>
         <option value="2009">2009</option>                           
    </select>
    <select id="slPeriod" style="width:100px;">
         <option>请选择</option>
    </select>function SelectYear(obj){
        var year=$(obj).val();//
        RollProportion.GetPeriodList(year,CallBackSelectYear);
    }
    //RollProportion是页面名称,GetPeriodList是后台方法,返回结果是IList集合,代码在下
    function CallBackSelectYear(req){
            if(req.error==null){
            $(req.value).each(function(){        
                $('#slPeriod').append('<option value='+this.ID+'>'+this.Number+'</option>')
            });      
        }
    }
    //你可以按照我的代码写一下,因为这部分代码涉及到一些类,所以没有全部贴出,如果不明白你可以加我MSN在线交流
    [AjaxPro.AjaxMethod]
        public IList<P_Period> GetPeriodList( int year )
        {
            try
            {
                return PeriodBAL.GetPeriodList( year );
            }
            catch ( Exception ex )
            {
                throw ex;
            }
        }
      

  9.   

    呵呵,借用楼主的帖子学习一下,请问我见很多人在JS取后台函数值时都分两个函数写,但我觉得一个就可以了,代码如下,如果这样写有什么问题请指点一下,我还不很明白其中道理,刚学着别人的代码写的..    <script language="javascript" type="text/javascript">
         
            function getDataSet()
            {
                var ds=_Default.GetSqlData().value;    //_Default为整个页面类的名称
                if (ds!=null && typeof(ds)=="object" && ds.Tables!=null)
                {
                    var sArray=new Array();
                    sArray[sArray.length] = "<table border=1>";
                    for(var i=0; i<ds.Tables[0].Rows.length; i++)
                    {
                        sArray[sArray.length] = "<tr>";
                        sArray[sArray.length] = "<td>" + ds.Tables[0].Rows[i].ID + "</td>";
                        sArray[sArray.length] = "<td>" + ds.Tables[0].Rows[i].Name + "</td>";
                        sArray[sArray.length] = "</tr>";
                    }
                    sArray[sArray.length] = "</table>";                
                    var tableDisplay=document.getElementById('divContaine');
                    tableDisplay.innerHTML = sArray.join("");
                }
                else
                {
                    alert('取从后台返回的ds时错误!');
                }
            }
            
        </script>public partial class _Default : System.Web.UI.Page 
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            AjaxPro.Utility.RegisterTypeForAjax(typeof(_Default));//Ajaxpro.dll的 
        }    [AjaxPro.AjaxMethod]
        public static DataSet GetSqlData()
        {
            DataSet ds = new DataSet();
            SqlCommand commQuery = new SqlCommand();
            commQuery.CommandText = "select ID,Name from GoodCategory";
            ds = MyClass.SqlClass.ds(commQuery);
            return ds;
        }
    }
      

  10.   

    呵呵,谢谢aoteman_prc指点,另外楼主的代码好象没全,aspx页上没有定义js函数接收cs里的东西了!
      

  11.   


    用下Jquery几句话就搞定了,呵~