实现一个功能:
环境:asp.net 4.0,webform,GridView数据绑定,Jquery
GridView后台数据绑定,可以增加新行,也可以删除当前行数据
没有使用自带的commandargument和RowCommand事件,不借助第三方控件
目的:使用客户端回调技术,并配合.RenderControl(HtmlTextWriter)技术(返回服务器控件的html)实现局部刷新。
问题:在网上看了好多都是关于.net 2.0回调的文章,继承ICallbackEventHandler接口,并实现RaiseCallbackEvent和GetCallbackResult两个方法,在前台触发回调函数后页面还是会刷新……百思不得其解,还望不吝指教。
后台代码如下:
public partial class WebForm1 : System.Web.UI.Page, ICallbackEventHandler
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
ClientScriptManager csm = Page.ClientScript;
string reference = csm.GetCallbackEventReference(this, "args", "Success", "", true);
string callbackScript = "function CallServer(args,context){\n" + reference + ";\n}";
csm.RegisterStartupScript(this.GetType(), "callserver", callbackScript, true);
BtnAdd.Attributes.Add("onclick", "CallServer('add',null)");
BindData();
}
}
private void BindData()
{
//……数据绑定
}
protected string RenderControlHtml(Control ctl)
{//返回控件产生的html
string strHtml;
using (var sw = new StringWriter())
{
using (var writer = new HtmlTextWriter(sw))
{
ctl.RenderControl(writer);
strHtml = sw.ToString();
writer.Close();
}
sw.Close();
};
return strHtml;
}
private string _strResult;
public string GetCallbackResult()
{
return _strResult;
}
public void RaiseCallbackEvent(string eventArgument)
{
_strResult = eventArgument ;
}
}
//前台JS
<asp:Button ID="BtnAdd" runat="server" Text="回调" />
<script type="text/javascript">
function Success(args, context) {
// alert(args);
$('#cd').html(args + '<h2>ssssssssssssss</h2>');
alert(context);
}
</script>
学下ajax吧,比你这个东西容易多了
用这两个不是可以实现局部吗