请问~~我在JS中为一个下拉菜单添加了几项,然后选了其中一项,然后回发到服务器,添加的项怎样才能在Page_Load中访问到呢?我回发之后,在Page_Load访问的下拉单始终只有原来的项,没有JS添加的项..
请指教!~谢谢~~~~

解决方案 »

  1.   

    AJAX.异步来调用
    JS也可以javascript函数中执行C#代码中的函数:
    方法一:1、首先建立一个按钮,在后台将调用或处理的内容写入button_click中;
            2、在前台写一个js函数,内容为document.getElementByIdx("btn1").click();
            3、在前台或后台调用js函数,激发click事件,等于访问后台c#函数;方法二:1、函数声明为public             
                后台代码(把public改成protected也可以)
               public string ss()
                {
                  return("a");
                }
            2、在html里用<%=fucntion()%>可以调用
                前台脚本
               <script language=javascript>
                var a = "<%=ss()%>";
                alert(a);
               </script>
    方法三:1、<script language="javascript">
               <!- -
                function __doPostBack(eventTarget, eventArgument)
                {
                   var theForm = document.Form1;     //指runat=server的form
                   theForm.__EVENTTARGET.value = eventTarget;
                   theFrom.__EVENTARGUMENT.value = eventArgument;
                   theForm.submit();
                }
               -->
               </script>
               <input id="Button1" type="button" name="Button1" value="按钮" onclick="javascript:__doPostBack('Button1','')">
            
    方法四:<script language="javascript">
    function SubmitKeyClick()
    {
        if (event.keyCode == 13)
         {
            event.cancelBubble = true;
            event.returnValue = false;
             document.all.FunName.value="你要调用的函数名";
             document.form[0].submit();
         }
    }
    </script><INPUT onkeypress="SubmitKeyClick()" id="aaa" type="text">
    <input type="hidden" name="FunName"> 〈!--用来存储你要调用的函数 --〉在.CS里有:
    public Page_OnLoad()
    {
    if (!Page.IsPost())
    {
    string strFunName=Request.Form["FunName"]!=null?Request.Form["FunName"]:"";
    //根据传回来的值决定调用哪个函数
    switch(strFunName)
    {
    case "enter()":
    enter() ; //调用该函数
    break;
    case "其他":
    //调用其他函数
    break;
    default:
    //调用默认函数
    break;
    }
    }
    }public void enter()
    {
    //……比如计算某值
    }
      

  2.   


    asp.net的DropdownList并不从客户端提交Items,因此你增加的所谓菜单项无法支持。你只能额外多编写一堆代码,把你增加的菜单项再写到一个HiddenField的Value属性中,并且在它的ValueChanged事件中解析并添加到DropdownList的Items中(但是不能绑定DropdownList),这样DropdownList的选中的项才能正常出现。
      

  3.   


    给你两个选择:1. 使用UpdatePanel。
    2. 完全使用js框架编程而放弃asp.net编程(类似于只适用ashx而放弃aspx)。
    这两种都可以比较方便的开发企业程序,而走中间路线往往混乱不堪。