<div id="test" onClick="Click()"></div>
<script language="javascript" type="text/javascript">
function Click()
{
  //调用后台C#函数LoadInformation
}
</script>public void LoadInformation() 
{
  //实现
}div标签是有后台C#代码动态生成,当点击div标签时会调用JS代码,但是需要用Js代码代用后台C#方法
请教达人有没有好的解决方案,谢谢了

解决方案 »

  1.   

    如果刷新可以,你在页面加一服务器按钮,宽度为0在
    function Click()
    {
      //调用后台C#函数LoadInformation
      document.getElementById('<%=btnID.ClientID%>').click();
    }在 按钮的点击事件中 调用LoadInformation() 方法
      

  2.   

    要是ajax  效果的话,你下一个 ajax.dll http://hi.baidu.com/kylin451771150/blog/item/01652916778fb51e972b43d1.html或者 异步请求调用 该页的 webmethod
      

  3.   


    简单介绍下它的用法:一.AjaxPro的使用
    1.在项目中添加引用,浏览找到AjaxPro.2.dll文件2.在Web.config中的system.web里面写入以下代码
    </configuration>
    <system.web>
      <httpHandlers>
            <add verb="*" path="*.ashx" type="AjaxPro.AjaxHandlerFactory,AjaxPro.2"/>
          </httpHandlers>
    </system.web>
    <//configuration>3.在加载事件中,加入
      AjaxPro.Utility.RegisterTypeForAjax(typeof(类名));4.写的方法都要用
     [AjaxPro.AjaxMethod]开头,然后在写方法5.调用时必须写清楚
     命名空间名.类名.方法,例:WebUI._Default.getData();6.调用可分两中方法(同步调用,异步调用)
     
    //在后台写的无参方法
    [AjaxPro.AjaxMethod]
    public string getStr()
    {
            return  "hello my friends";
    }
    //在后台写的有参方法
     [AjaxPro.AjaxMethod]
    public string getString(string str)
    {
         return str + "Say: hello my friends";
    }a.同步调用
     (1).拖入html控件button
     (2).双击,自动显示在.aspx的脚本中
     (3).在里面写入你要输入的内容
     例:
    //------------------同步调用无参-----------
      function Button1_onclick() 
      {
             var res=WebUI._Default.getStr();
             alert(res.value);
      } 
      
    //------------------同步调用有参------------
    function Button2_onclick() //TextBox1为服务器控件
    {
        var str=document.getElementById("<%=TextBox1.ClientID%>").value;
        var res=WebUI._Default.getStr(str);
        alert(res.value);
    }
    b.异步调用
     (1).拖入html控件button
     (2).双击,自动显示在.aspx的脚本中
     (3).在里面写入你要输入的内容
     例:
    //-----------------异步调用无参-----------------
    function Button3_onclick() {
        WebUI._Default.getStr(getStrCallBack);
    }
    function getStrCallBack(res)
    {
        alert(res.value);
    }
    //-----------------异步调用有参-----------------
    function Button4_onclick() {
        var str=document.getElementById("<%=TextBox1.ClientID %>").value;
        WebUI._Default.getString(str,getStringCallBack);
    }
    function getStringCallBack(res)
    {
        alert(res.value);
    }7.调用对象//对象
    [AjaxPro.AjaxMethod]
    public Class getClass()
    {
           Class cla = new Class();
           cla.C_Id = 100;
           cla.C_Name = "34班";
           cla.Count = 20;
           return cla;
    }
    //------------------同步调用对象-----------
    function Button5_onclick() {
        var res=WebUI._Default.getClass().value;
        alert("班级编号:"+res.C_Id+"名称:"+res.C_Name+"人数:"+res.Count);
    }
    //------------------异步调用对象-----------
    function Button6_onclick() {
        WebUI._Default.getClass(getClassCallBack);
    }
    function getClassCallBack(clas)
    {
        var res=clas.value;
        alert("班级编号:"+res.C_Id+"名称:"+res.C_Name+"人数:"+res.Count);
    }
    8.数据集的使用
     //方法
            [AjaxPro.AjaxMethod]
            public DataSet getInfo()
            {
                return WebUI.GetDataSet.getList();
            }//--------------------异步调用数据集--------------
    function Button8_onclick() {
        WebUI._Default.getInfo(getDataSetCallBack);
    }
    function getDataSetCallBack(res)
    {
        var dataset=res.value;
        var strHtml="";
        strHtml +='<table  style ="border-collapse:collapse ; border-color:Gray ;"  border="1px">';
        strHtml +='        <tr>';
        strHtml +='            <td>学生编号</td>';
        strHtml +='            <td>名称</td>';
        strHtml +='            <td>年龄</td>';
        strHtml +='        </tr>';
        
        for(var i=0;i<dataset.Tables[0].Rows.length;i++)
        {
            strHtml +='        <tr>';
            strHtml +='            <td>'+ dataset.Tables[0].Rows[i].stu_id +'</td>';
            strHtml +='            <td>'+ dataset.Tables[0].Rows[i].stu_name +'</td>';
            strHtml +='            <td>'+ dataset.Tables[0].Rows[i].stu_age +'</td>';
            strHtml +='        </tr>';
        }
        strHtml +='    </table>';
        thedata.innerHTML=strHtml;//thedata是一个<div id="thedata"></div>中的thedata
    } 9.验证码的使用//----------------------验证码的使用(必须采用同步调用)----------------------//验证码的使用
    [AjaxPro.AjaxMethod]
    public bool ValidCodeData(string code)
    {
         return (HttpContext.Current.Session["CheckCode"].ToString()==code);
    }function Button9_onclick() {
        var code=document.getElementById("<%=TextBox2.ClientID %>").value;
        var bool=WebUI._Default.ValidCodeData(code).value;
        if(bool==true)
        {
            alert("ok");
        }else
        {
            alert("no");
        }
    }
    AjaxPro.dll文件网上很多的,自己下
      

  4.   


    二,直接调用:
    javascript中:<%=后台方法%>
     function says()
        {
            alert("<%=Say()%>");
        }
        function del()
        {
             alert("<%=DeleteByID(8)%>");//DeleteByID(8)后台方法名
        }
    三,采用ICallbackEventHandler回调
    //必须声明System.Web.UI.ICallbackEventHandler接口
    public partial class _Default : System.Web.UI.Page, System.Web.UI.ICallbackEventHandler
    {
        //定义一个回调的返回值
        private string Result;
        //定义两个变量,用来接收页面传过来到操作数
        private string Num1;
        private string Num2;
        protected void Page_Load(object sender, EventArgs e)
        {
            
         }    /// <summary>
        /// 该方法是回调执行的方法,根据参数在这个方法中处理回调的内容,该方法没有返回值
        /// </summary>
        /// <param name="eventArgument">此参数是从客户端传过来的</param>
        public void RaiseCallbackEvent(string eventArgument)
        {
            //eventArgumeng 为javascript从客户端传递的参数,本例传过来三个参数用“/”分割将每个参数取出存入数组
            string[] PagParams = eventArgument.Split('/');
             Num1 = PagParams[1];
             Num2 = PagParams[2];
            //根据第一个参数(所选的操作符),调用不同的执行函数
            switch (PagParams[0])
            {
                case "0":
                     Result = add(); break;
                case "1":
                     Result = sub(); break;
                case "2":
                     Result = multi(); break;
                case "3":
                     Result = division(); break;
             }
         }
        
        /// <summary>
        /// 该方法是返回回调的结果给客户端
        /// </summary>
        /// <returns></returns>
        public string GetCallbackResult()
        {
            return Result;
         }    //一下四个函数是通过RaiseCallbackEvent方法,调用的回调要执行操作的函数
        private string add()
        {
            double addResult = double.Parse(Num1) + double.Parse(Num2);
            return addResult.ToString();
         }    private string sub()
        {
            double addResult = double.Parse(Num1) - double.Parse(Num2);
            return addResult.ToString();
         }    private string multi()
        {
            double addResult = double.Parse(Num1) * double.Parse(Num2);
            return addResult.ToString();
         }    private string division()
        {
            double addresult = double.Parse(Num1) / double.Parse(Num2);
            return addresult.ToString();
         }
    }引用:http://203.208.37.104/search?q=cache:QKzWrfgS4XgJ:blog.csdn.net/zhoubohua/archive/2008/09/20/2954245.aspx+ajaxpro+用法&hl=zh-CN&ct=clnk&cd=1&gl=cn&st_usg=ALhdy29Hixm_2y8mlLF1iGn93b4HdOTTaw
      

  5.   

    在服务器端.C#的方法里加上[WebMethod]
    public string Get(string s)
    {
     return s + "abc";
    }然后在aspx上放一个<asp:ScriptManager PageMethod="Enabled"然后在js里通过PageMethods.Get($get('控件ID').value, OnSuccess, OnFailed);function OnSuccess(result)
    {
    ...
    }大概这样,具体我现在懒的找资料了。就是有这种方式
      

  6.   

    http://hi.baidu.com/80256498/blog/item/80668501c17f590e1c95831b.html
      

  7.   

    div标签是有后台C#代码动态生成,当点击div标签时会调用JS代码,但是需要用Js代码代用后台C#方法 用AJAX
      

  8.   

    如果有AJAX的话,那就简单了,JS可以直接调用后台代码。
      

  9.   

    在你的click事件里写
    if (event.keyCode == 13)
    {
    event.cancelBubble = true;
    event.returnValue = false;
    document.all.FunName.value="你要调用的函数名";
    document.form[0].submit();
    }
    再加个隐藏表单
    <input type="hidden" name="FunName"> 〈!--用来存储你要调用的函数 --〉 
      

  10.   

    给你个例子,没有什么比例子更直观的了。
    http://download.csdn.net/source/1172543
      

  11.   

    Page_Load里面进行注册
    Ajax.Utility.RegisterTypeForAjax(typeof(BoroughPlatform.SpiecialInvest.类名));[Ajax.AjaxMethod(Ajax.HttpSessionStateRequirement.ReadWrite)]
    public string Save(string address)
    {
    }Javascript:
    var returnValue = 类名.Save("");前提是要引用Ajax.dll