下面就针对我们在实际项目中使用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. 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的运用已经基本完成,是不是太简单一点了。事实上,就这么简单。
{
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
//联动函数
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