.aspx 頁面代碼
<head runat="server">
<script type="text/javascript" language="javascript">
function CallServerFunction()
{
//Arg是傳向後台方法RaiseCallbackEvent()的參數,這裡將操作符運算元一塊傳過去
var title=document.getElementById("<%=TBTitle.ClientID %>").value;
var content=document.getElementById("<%=TBContent.ClientID %>").value;
args=title+"|"+content;
//args=document.getElementById("<%=TBTitle.ClientID %>").value;//單參數
if(title!="")
{
//擷取一個用戶端函數的引用;調用該函數時,將啟動一個對伺服器端事件的用戶端回調
<%= ClientScript.GetCallbackEventReference(this,"args","ReceiveServerData","null") %>
}
else
{
alert("請輸入名稱!");
return false;
}
}
function ReceiveServerData(result)
{
//js裡面,必須用Label的innerHTML 屬性,用Text屬性不會產生任何效果
if(result!='')
{
alert("添加成功");
}
lblShow.innerHTML = result;
}
function CallServerFunction_onload()
{
//Arg是傳向後台方法RaiseCallbackEvent()的參數,這裡將操作符運算元一塊傳過去
var title=document.getElementById("<%=TBTitle.ClientID %>").value;
var content=document.getElementById("<%=TBContent.ClientID %>").value;
args=title+"|"+content;
//擷取一個用戶端函數的引用;調用該函數時,將啟動一個對伺服器端事件的用戶端回調
<%= ClientScript.GetCallbackEventReference(this,"args","ReceiveServerData_onload","null") %>
}
function ReceiveServerData_onload(result)
{
//js裡面,必須用Label的innerText屬性,用Text屬性不會產生任何效果
lblShow.innerHTML = result;
}
//接收回調後台傳過來的結果資料,該函數名為GetCallbackEventReference()的第三個參數
</script>
</head>
<body onload="CallServerFunction_onload()">
<form id="form1" runat="server">
<div>
<%--調用回呼函數的控制項必須是HTML控制項,不能為服務端控制項--%>
<asp:TextBox ID="TBTitle" runat="server"></asp:TextBox> <asp:TextBox ID="TBContent" runat="server"></asp:TextBox>
<input type="Button" id="eq" value="添加" onclick="CallServerFunction()" style="width: 64px" />
<span id="gridspan">
<asp:GridView ID="gv" runat="server" AutoGenerateColumns="False">
<Columns>
<asp:BoundField DataField="id" HeaderText="id" />
<asp:BoundField DataField="title" HeaderText="標題" />
<asp:BoundField DataField="content" HeaderText="內容" />
</Columns>
</asp:GridView>
<asp:Label ID="lblShow" runat="server" Text="show"></asp:Label>
</span>
<br />
</div>
</form>
</body>
</html>
.aspx.cs 代碼:
private string Result;
//定義兩個變數,用來接收頁面傳過來到運算元
protected void Page_Load(object sender, EventArgs e)
{
}
private GridView Bind()
{
CMS.BLL.NewsManage nm = new CMS.BLL.NewsManage();
nm.SortField = "createTime desc";
ArrayList al = nm.GetAll(0, 2);
this.gv.DataSource = al;
this.gv.DataBind();
return this.gv;
}
/// <summary>
/// 該方法是回調執行的方法,根據參數在這個方法中處理回調的內容,該方法沒有傳回值
/// </summary>
/// <param name="eventArgument">此參數是從用戶端傳過來的</param>
public void RaiseCallbackEvent(string eventArgument)
{
//根據第一個參數(所選的操作符),調用不同的執行函數
Result = add(eventArgument);
}
/// <summary>
/// 該方法是返回回調的結果給用戶端
/// </summary>
/// <returns></returns>
public string GetCallbackResult()
{
return Result;
}
//一下四個函數是通過RaiseCallbackEvent方法,調用的回調要執行操作的函數
private string add(string title)
{
string[] news =title.Split('|');
if (news[0].ToString()!="")
{
CMS.BLL.NewsManage nm = new CMS.BLL.NewsManage();
CMS.Model.CMS_NewsT nt = new CMS.Model.CMS_NewsT();
nt.title =news[0];
nt.modifyTime = System.DateTime.Now;
nt.createTime = DateTime.Now;
nt.state = 1;
nt.content = news[1];
nm.ModelObj = nt;
nm.Insert();
}
StringBuilder strHtml = new StringBuilder();
strHtml.Append(RenderControl(this.Bind()));
return strHtml.ToString();
}
/*-----------說明------
調用的順序是: (前台)CallServerFunction() -->執行此JS方法,通過GetCallbackEventReference方法實現 (後台)ICallbackEventHandler.RaiseCallbackEvent(string eventArgument)接收頁面傳來的參數,並執行自訂方法,
* 並返回頁面中所需要的值。-->
(後台)ICallbackEventHandler.GetCallbackResult()取得自訂方法返回的值給頁面 --> (前台)ReceiveServerData(string Value)。根據返回的值輸入要顯示的內容*/
private string RenderControl(Control control)
{
StringWriter writer1 = new StringWriter(CultureInfo.InvariantCulture);
HtmlTextWriter writer2 = new HtmlTextWriter(writer1);
control.RenderControl(writer2);
writer2.Flush();
writer2.Close();
return writer1.ToString();
}