下面就针对我们在实际项目中使用MagicAjax的基本过程和需要注意的问题作一个简单说明。
二、开发和部署系统准备
    1.  Microsoft Visual Studio .NET 2003.
    2.  Microsoft .NET Framework 1.1
    3.  Microsoft .NET Framework 1.1 HotFix(KB886903) (一定要装,不然会因为viewstate不全而造成一些奇怪的问题)
三、MagicAjax使用准备
    1.     首先当然是去http://sourceforge.net/projects/magicajax下载MagicAjax的Dll了,我使用的0.3.0.0的版本。
    2.     将该dll加入到webForm所在项目的引用中。
    3.     在Web.Config文件中<configuration>节点下添加如下子节点:    <configSections>       <section name="magicAjax" type="MagicAjax.Configuration.MagicAjaxSectionHandler, MagicAjax" />    </configSections>
     4.  在Web.Config文件中< system.web>节点下添加如下子节点:        <httpModules>            <add name="MagicAjaxModule" type="MagicAjax.MagicAjaxModule, MagicAjax" />        </httpModules>
 
    5.  在希望采用Ajax的webForm页面HTML开头引入Ajax的注册语句:
<%@ Register TagPrefix="ajax" Namespace="MagicAjax.UI.Controls" Assembly="MagicAjax" %>    这样,我们就可以在该页使用MagicAjax了。
四、MagicAjax使用
   在BMS 项目中,我只用到了一个MagicAjax组件,那就是Ajax Panel.用法也是很简单:
   1.  将你需要采用无刷新操作的控件包在MagicAjax的标签中,类似如下代码:<ajax:AjaxPanel ID="AjaxPanel1" runat="Server"> 
 
    <asp:DropDownList id="DropDownList1" runat="server"></asp:DropDownList>    <asp:DropDownList id="DropDownList2" runat="server"></asp:DropDownList>    <asp:DropDownList id="DropDownList3" runat="server"></asp:DropDownList></ajax:AjaxPanel>
    (以上代码假设DropDownList1,DropDownList2,DropDownList3存在联动关系,控件设为AutoPostBack,并且联动方法已经在后台写好了。)
    2.    再到页面上去点击DropDownList1,以前需要刷新的操作现在是不是不需要了?(左上角是不是有个loading一闪而过?这个文字和样式都可以换的哦)。
    3.  至此,MagicAjax的运用已经基本完成,是不是太简单一点了。事实上,就这么简单。

解决方案 »

  1.   

    private void BindToDDL()
    {
    BLL.User user = new BLL.User();
    this.ddlClass.DataSource= user.selectBase("zhuid,zhuname","zhulm","");
    this.ddlClass.DataValueField="zhuid";
    this.ddlClass.DataTextField="zhuname";
    this.ddlClass.DataBind();
    if(ddlClass.Items.Count==0)
    {
    Response.Write("<script>alert('服装类没有下级类,无法添加产品,请联系管理员!');</script>");

    return;
    }
    this.BindToDDL2();

    } private void BindToDDL2()
    {
    BLL.User user = new BLL.User();
    this.ddlClass2.DataSource= user.selectBase("fuid,funame","fulm","where C2ID="+this.ddlClass.SelectedValue);
    this.ddlClass2.DataValueField="fuid";
    this.ddlClass2.DataTextField="funame";
    this.ddlClass2.DataBind();
    if(ddlClass2.Items.Count==0)
    {
    Response.Write("<script>alert('服装类没有下级类,无法添加产品,请联系管理员!');</script>");

    }

    }
    private void ddlClass_SelectedIndexChanged(object sender, System.EventArgs e)
    {
    this.BindToDDL2();
    }
    user.selectBase是读取数据源的方法,先不说了,用ddl的话  ddlClass (主类)的autopostback属性要设成true
      

  2.   

    <script type="text/javascript">
    //联动函数
    function changehs(){
          //首先取出当前选中的是那个省
          var selectProObj = document.getElementById("DdlProvince");
          var selectProId  = selectProObj.options[selectProObj.selectedIndex].value;
          
                  //获取所有省市ID的下拉框的项目的个数
          var sLen = document.getElementById("DdlCity").options.length;                      
                  //清除以前的内容
          for(var i=0;i<sLen;i++)
            {document.getElementById("DdlCity").options.remove(0);}
                  
                  //获取所有省市ID的下拉框的项目的个数       
          var idObj = document.getElementById("Ddl_ProId");
          sLen = idObj.options.length; 
          var hidecityObj = document.getElementById("Ddl_CityId");
          var cityObj     = document.getElementById("DdlCity");
               
                cityObj.options.add(new Option("请选择市","请选择市"));
                  for (var i=0;i<sLen;i++)
                    if (selectProId == idObj.options[i].value){
                cityObj.options.add(new Option(hidecityObj.options[i].text,hidecityObj.options[i].value));
             }
             
            
          }
          
    function setValue(obj){
       document.getElementById("edtCityId").value = obj.options[obj.selectedIndex].value;
    }
      </script>
    DdlProvince.Attributes.Add("onchange", "changehs();");
    this.DdlCity.Attributes.Add("onchange", "setValue(this)");
    添加两个隐藏dropdownlist 分别绑定 Ddl_ProId  Ddl_CityId