我已在网页上添加了 Gridview 控件。
我通过调用 PageMethod 删除任何行(一次一行),如下所示:
<script type="text/javascript">
function Delete_Row(){
PageMethods.DeleteRow(row_id, GetTimeCallback, ErrorHandler, TimeOutHandler);
}
GetTimeCallback = function (result)
{
if (result) {
alert('Row is deleted');
// I want to refresh the Gridview here
}
}
<script type="text/javascript">
其中“row_id”是行的主键。
它完美地显示了警报,但不会刷新 Gridview 并少删除一行。
我应该编写什么代码来更新gridview?
注意:我不想刷新整个页面。
最佳答案
编写CallBack函数来实现这一点...您可以在 http://msdn.microsoft.com/en-us/library/ms178208 找到回调功能和 http://msdn.microsoft.com/en-us/library/ms178210
编辑:-
protected void Page_Load(object sender, EventArgs e)
{
String cbReference =Page.ClientScript.GetCallbackEventReference(this,
"arg", "ReceiveServerData", "context");
String callbackScript;
callbackScript = "function CallServer(arg, context)" +
"{ " + cbReference + ";}";
Page.ClientScript.RegisterClientScriptBlock(this.GetType(),
"CallServer", callbackScript, true);
}
System.IO.StringWriter strDataGridHtml= new System.IO.StringWriter();
public void RaiseCallbackEvent(String eventArgument)
{
string idToBeDeleted=eventArgument;
//Write deleteCode
//DataBind the Grid
HtmlTextWriter htwObject = new HtmlTextWriter(strDataGridHtml);
GridViewControl.RenderControl(htwObject);
}
public String GetCallbackResult()
{
return strDataGridHtml.ToString();
}
现在,正如您所看到的,strDataGridHtml 将被发送到 Javascript 函数 ReceiveServerData...
<script type="text/ecmascript">
function ReceiveServerData(rValue)
{
document.getElementById("divIDWhichEncapsulategridView").innerHTML = rValue;
}
</script>
希望这会对您有所帮助...因为我没有完整的代码,所以我无法编写确切的代码...但这应该给您一些如何继续的想法...并且还请仔细阅读“回调”功能,以便充分理解此功能..
关于c# - 在 asp.net 中从客户端 (Javascript) 刷新 GridView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12215384/