2008年1月16日 星期三

使用AJAX.dll來實現由Client的JavaScript來及時呼叫Server的對DB取值的功能

使用AJAX.dll來實現由Client的JavaScript來及時呼叫Server的對DB取值的功能
在Key入工號的同時即時回資料庫查詢是否有符合的資料,將正確值立即帶出顯示相關的資訊(【526274三趨一17SF200】)

1. 先將ajax.dll參考到專案中
2. 在web.config中加入





3. 在要引用的.cs上Using
using Ajax;
4. 在PageLoad時加入
Ajax.Utility.RegisterTypeForAjax(typeof(GetPlanProj)); //掛入Ajax的Library
GetPlanProj=>是此.cs的ClassName
5. 攥寫Server的Function
#region Ajax 利用計畫代號查詢相關資料
[Ajax.AjaxMethod()]
public string show_pojno(string pojno)
{
string str = "";
DataTable DT = prs020.SearchPrs020(pojno);
if (DT.Rows.Count != 0)
{
//支出計畫代號,計畫名稱,計畫主持人
str = DT.Rows[0]["s20_pojno"].ToString().Trim() + ","
+ DT.Rows[0]["s20_pojcname"].ToString().Trim() + ","
+ DT.Rows[0]["s20_noinchrg"].ToString().Trim() + ","
+ DT.Rows[0]["com_cname"].ToString().Trim() + ","
+ DT.Rows[0]["com_telext"].ToString().Trim();
}
else
{
str = "none,none,none";
}
return str;
}
#endregion
6. 在要引用的元件(TextBox)上加入onkeyup的屬性,以呼叫javascript的運作
tbxProjNo.Attributes.Add("onkeyup", this.ClientID + "jsquery_pojno('');");
7. 撰寫javascript的Function動作
/* 計畫代號查詢 keyin */
Script1.Append("function " + this.ClientID + "jsquery_pojno(org) { \n");
Script1.Append("var pojno=document.all['" + tbxProjNo.ClientID + "'].value; \n");
Script1.Append("var m = GetPlanProj.show_pojno(pojno).value.split(','); \n");
Script1.Append("if(m[0]!='none'){ \n");
Script1.Append("if(typeof(document.all['" + tbxProjNo.ClientID + "']) == 'object'){document.all['" + tbxProjNo.ClientID + "'].value=m[0];} \n");
Script1.Append("if(typeof(document.all['" + tbxProjCName.ClientID + "']) == 'object'){document.all['" + tbxProjCName.ClientID + "'].value=m[1];} \n");
Script1.Append("if(typeof(document.all['" + tbxProjHost.ClientID + "']) == 'object'){document.all['" + tbxProjHost.ClientID + "'].value=m[3]+'/'+m[2]+'/'+m[4];} \n");
Script1.Append("}else{ \n");
Script1.Append("if(typeof(document.all['" + tbxProjCName.ClientID + "']) == 'object'){document.all['" + tbxProjCName.ClientID + "'].value='';} \n");
Script1.Append("if(typeof(document.all['" + tbxProjHost.ClientID + "']) == 'object'){document.all['" + tbxProjHost.ClientID + "'].value='';} \n");
Script1.Append("}} \n");
A. 請注意m = GetPlanProj.show_pojno(pojno).value.split(',')是叫用Server的Function
B. GetPlanProj是ClassName
show_pojno是FunctionName
8. NDA系統中有用到的程式其中一個GetPlanProj.ascx
其他開窗程式也大多都有用到在UserControl資料夾下

沒有留言: