2012-08-31 2 views
1

웹 페이지에 Gridview 컨트롤을 추가했습니다.
asp.net의 ClientSide (Javascript)에서 GridView 새로 고침

I은 ​​다음과 PageMethod를 호출하여 모든 행 (한 번에 하나의 행)를 삭제하고 "을 ROW_ID"

<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"> 

행의 primery 핵심입니다.

경고를 완벽하게 표시하지만 삭제되지 않은 행이 하나 적은 Gridview는 새로 고치지 않습니다.
어떤 코드를 작성해야합니까? Gridview를 업데이트 하시겠습니까?
참고 : 전체 페이지를 새로 고치고 싶지 않습니다.

답변

1

쓰기 콜백 기능이 acheive하는 ... 당신은 콜백 http://msdn.microsoft.com/en-us/library/ms178208에서 기능 및 http://msdn.microsoft.com/en-us/library/ms178210

편집 찾을 수 있습니다 -이 strDataGridHtml 참조로 이제

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(); 
    } 

을 것이다 Javascript 함수 ReceiveServerData ...

<script type="text/ecmascript"> 

    function ReceiveServerData(rValue) 
    { 
     document.getElementById("divIDWhichEncapsulategridView").innerHTML = rValue; 

    } 
    </script> 

호프가 도움이 될 것입니다. 정확한 코드를 작성할 수는 없지만 ... 진행 방법에 대한 아이디어가 있어야합니다. 또한 이동하십시오. "콜백"기능을 통해이 기능을 최대한으로 이해할 수 있습니다 ..

+0

감사합니다. 그것은 서버 측 메서드 "RaiseCallbackEvent"를 호출하고 있지만 Gridview를 새로 고치지 않습니다. 내가 사용했다 GridView1.DataSource = SqlDataSource1; GridView1.DataSourceID = String.Empty; GridView1.DataBind(); 이 코드는 서버 측 메서드 에 있지만 작동하지 않습니다. 다른 아이디어? –

+0

당신이해야 할 일은 .. 바인딩 후 HTMLTextWriter를 사용하여 gridView 컨트롤을 렌더링하고 자바 스크립트 함수에 전달합니다. 자바 스크립트 함수에서이 텍스트를 Div에 InnerHTML로 할당해야합니다 ... –

+0

System.IO .StringWriter sWriter = new System.IO.StringWriter(); HtmlTextWriter htwObject = 새로운 HtmlTextWriter (sWriter); GridViewControl.RenderControl (htwObject); 이것은 HTMLTextWriter에서 gridview를 렌더링하는 방법입니다. 자바 스크립트로 넘기십시오. –