1

webPageにGridviewコントロールを追加しました。

次のようにPageMethodを呼び出して、任意の行を(一度に1行ずつ)削除しています。

    <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」は行のプライマーキーです。

アラートは完全に表示されますが、削除された行が1つ少なくなるとGridviewは更新されません。
グリッドビューを更新するには、どのコードを書く必要がありますか?
注:ページ全体を更新したくありません。

4

1 に答える 1

1

これを実現するためのコールバック関数を記述します...コールバック機能は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>

これがお役に立てば幸いです。完全なコードがないため、正確なコードを記述できません。ただし、これにより、続行する方法についてのアイデアが得られるはずです。また、「コールバック」を実行してください。 「この機能を最大限に理解するための機能。

于 2012-08-31T12:49:26.983 に答える