.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 οnlοad="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="添加" οnclick="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();
}