實例OAY Report
1,建立.net2005的網站test。
2,在bin文件夾下引用ajaxpro.dll(網站下載),或者直接把bin目錄放到test網站之下。
3,在webconfig中增加如下代碼
<system.web>
<httpHandlers>
<add verb="POST,GET" path="ajaxpro/*.ashx" type="AjaxPro.AjaxHandlerFactory, AjaxPro.2"/>
</httpHandlers>
4,在後臺cs中寫代碼:
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
AjaxPro.Utility.RegisterTypeForAjax(typeof(_Default));
}
[AjaxPro.AjaxMethod]
public string senddata(string rq)
{
rq = "2006";
string str;
str="sdfsdfsdfsdfsfdsffdfs"+rq;
return str;
}
}
5,在前臺寫代碼:
<script>
function diaoyong()
{
var c;
c=hello._Default.senddata("2006",handle);
//注意:傳遞參數,senddata後面的“2006”作爲前臺的數據傳遞給後臺。後面的handle函數
//是處理的函數,默認爲這個,其實最好不用這麼寫,不過不這麼寫調試打印出來的有問題,
// 疑惑ing。
}
function handle(res)
{
alert(res.value);
}
</script>
<body>
<form id="form1" runat="server">
<div>
<input id="Button1" type="button" value="search" οnclick="diaoyong();" />
<input id="Text1" type="text" /></div>
</form>
</body>
//疑惑1:必須寫handle函數,否則打印出來的是object object,不知爲什麼。
//疑惑2:如果在.cs中寫上了命名空間:[AjaxPro.AjaxNamespace("hello")]
//則在js中調用時候寫上:hello._default.senddata()時候會出現問題,說是爲空或者不是對象
採用AjaxPro.dll,
如果是.NET 2.0,請採用AjaxPor.2.dll
注意事項
1.引用using AjaxPro;
2.在Web.Config文件中 </system.web> 的前面加上
<httpHandlers>
<add verb= "POST,GET " path= "ajaxpro/*.ashx "
type= "AjaxPro.AjaxHandlerFactory, AjaxPro "/>
</httpHandlers>
3.前臺的form必須是runat=server,否則報錯 ***********重要************
4. *.aspx.cs文件
在命名空間下一行,類定義的上一行加上
[[AjaxPro.AjaxNamespace( "當前類名 ")]
注:此適應版本 6.10.6.1 ,不同版本有些不同
在定義的方法的上一行加上[AjaxPro.AjaxMethod] 表示該方法是Ajax方法
在Page_Load ( )方法內加上註冊該類:
AjaxPro.Utility.RegisterTypeForAjax(typeof(定義Ajax方法所在的類名));
5: 在javascript中使用Ajax方法:
Ajax類.Ajax方法(參數, 回調函數名稱)
相關示例:
前臺----javascript -----
function DelRec(){
var n=1;
if (n <1) return;
var ssid=document.getElementById( 'dgrid ').rows[n].cells[0].innerHTML;
if(confirm( "Are You Sure Delete Current Select Record, ID= " + ssid)==false) return;
var XmlStr= " <?xml version= '1.0 ' encoding= 'UTF-8 '?> <REC> <SID> " + ssid + " </SID> </REC> ";
WebAjaxAct.DelRec(XmlStr,DelTableRow);
}
function DelTableRow(result){
var xmlDoc=new ActiveXObject( "Microsoft.XMLDOM ");
//alert( "返回值: " + result.value);
xmlDoc.loadXML(result.value);
var n=xmlDoc.documentElement.childNodes[0].childNodes[0].nodeValue;
//刪除表格一行
}
***.aspx.cs文件 (請注意*********地方的代碼,並對照上面的描述)
-------- C# ------
using AjaxPro;
namespace WTest{
[AjaxPro.AjaxNamespace( "WebAjaxAct ")] **************
public class WebAjaxAct : System.Web.UI.Page
{
private void Page_Load(object sender, System.EventArgs e) {
AjaxPro.Utility.RegisterTypeForAjax(typeof(WebAjaxAct)); ***********
}
[AjaxPro.AjaxMethod] ************
public string UpdateRec(string szXML){
其它處理
string XmlStr= " ";
//給XmlStr賦值
return XmlStr;
}
}
}
AjaxPor + XML 輕鬆實現無刷新分頁
原理,利用AjaxPro的後臺方法返回分頁的XML,再利用XML2Table實現前臺顯示
<INPUT οnclick= "ShowPage( '1 ') " type= "button " value= "First ">
<INPUT οnclick= "ShowPage( '2 ') " type= "button " value= "Prev ">
<INPUT οnclick= "ShowPage( '3 ') " type= "button " value= "Next ">
<INPUT οnclick= "ShowPage( '4 ') " type= "button " value= "Last ">
<asp:datagrid id= "dgrid " runat= "server " > </asp:datagrid >
function ShowPage(i)
{
if (i== "1 ") curpage=1;
if (i== "2 ") curpage--;
if (i== "3 ") curpage++;
if (i== "4 ") curpage=npage;
if(curpage <=1) curpage=1;
if(curpage> npage) curpage=npage;
AjaxPro類.返回當前分面的方法(curpage,ShowTable=function (result){
if (result.value!=null){XML2Table( 'dgrid ',result.value);
}
);
}
function XML2Table(tb,szxml){
if (szxml==null || szxml== " ") return;
var xmlDoc=new ActiveXObject( "Microsoft.XMLDOM ");
xmlDoc.async = false;
xmlDoc.loadXML(szxml);
if(xmlDoc.parseError.errorCode!=0){
// var txt= "Return Data Format Error:"r"n"r"n ";
// txt=txt+ "Error Code: " + xmlDoc.parseError.errorCode + ""n ";
// txt=txt+ "Error Reason: " + xmlDoc.parseError.reason;
// txt=txt+ "Error Line: " + xmlDoc.parseError.line;
// alert(txt);
return;
}
var x=xmlDoc.documentElement;
var m=x.childNodes.length;
if (m==0) return;
var n=x.childNodes[0].childNodes.length;
var t=document.getElementById(tb);
for(var i=t.rows.length-1;i> 0;i--)t.deleteRow(i);
var tr;
var td;
for (var j=0;j <m;j++){
tr=t.insertRow(-1);
//tr.height=16;
for (i=0;i <n;i++){
td=tr.insertCell(-1);
try{
td.innerHTML=x.childNodes[j].childNodes[i].childNodes[0].nodeValue;
}
catch(err){td.innerHTML= " ";}
}
}
}