1

我在网页上添加了 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?
注意:我不想刷新整个页面。

4

1 回答 1

1

编写回调函数来实现这一点......您可以在http://msdn.microsoft.com/en-us/library/ms178208http://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>

希望这会对您有所帮助..由于我没有您的完整代码,因此我无法编写确切的代码...但这应该使您对如何继续进行一些想法...并且还请通过“回调" 功能,以便充分了解此功能..

于 2012-08-31T12:49:26.983 回答