2012-01-31 2 views
1

현재 & 드롭을 GridView 행에 드롭하여 새로운 행 순서를 WebMethod으로 보내면이 새로운 값에 따라 데이터베이스가 업데이트됩니다.WebMethod를 호출 한 후 GridView를 바인딩하는 방법은 무엇입니까?

그래서 WebMethod를 호출 한 후 웹 양식의 GridView를 업데이트 할 수 있습니까? WebMethod에서 webform 요소에 액세스 할 수 없다는 것을 고려하십시오.

웹 방법 :

[WebMethod] 
public static void GridViewCarriersReorders(string Reorder) 
{ 
    Boolean result; 
    string[] ListID = Reorder.Split('|'); 
    transactions tr = new transactions(); 
    result = tr.updateLcrPriorities(ListID); 
    //updateGridViewCarriers(); //SOMETHING LIKE THIS IS NEEDED TO DO THE BINDING 
} 

주셔서 감사합니다 도움과 이해에 대한 많은.

UPDATE : 당신이있는 gridview 주위에 UpdatePanel을 넣으면

$.ajax({ 
    type: "POST", 
    url: "lcrP.aspx/GridViewCarriersReorders", 
    data: '{"Reorder":"' + strorder + '"}', 
    contentType: "application/json; charset=utf-8", 
    dataType: "json", 
    async: true, 
    cache: false, 
    success: function (msg) { 
     $.jGrowl("The Carriers priority was successfully updated", { theme: "succeeded" }); 
    } 
}) 
+0

Javascript를 사용하여 Ajax 포스트 백, JQuery.Delay() 또는 setTimeout을 수행 했습니까? – Lloyd

+0

@Lloyd 사실, 나는 ajax를 사용하여 webmethod를 호출하고있다. 하지만 GridView를 업데이트하는 데 어떻게 사용할지 알 수 없습니다. 어떤 생각? – aleafonso

+0

이렇게하려면 자바 스크립트를 사용해 보셨나요? [이 게시물] (http://viralpatel.net/blogs/2009/03/dynamically-add-remove-rows-in-html-table-using-javascript.html)을 검토하십시오. WebMethod에서 성공을 거두면 행을 만들고 GridView에 추가합니다 (테이블이 실제로 존재 함). –

답변

1

, 당신은 그것을 다시 게시를 호출 할 수 있습니다 :

success: function (msg) { 
     $.jGrowl("The Carriers priority was successfully updated", { theme: "succeeded" }); 
     __doPostBack('UpdatePanel1', ''); 
    } 

이 내가의 WebMethod를 호출하고 어떻게 편집 : 당신 스스로 발견했듯이, 나는 OnLoad 이벤트에서 그리드의 데이터 바인딩을 강요해야한다고 쓰고 싶었습니다 :

void OnLoad(EventArgs e) { 
    base.OnLoad(e); 
    myGrid.DataBind(); 
} 

그리드가 xDataSource 컨트롤에 바인딩되어있는 경우 그리드의 viewstate를 비활성화 할 수 있으며 각 포스트 백에서 강제로 DataBind를 수행 할 수 있습니다.

+0

답변 해 주셔서 감사합니다. 그러나 그것은 효과가 없습니다. 방금 디버깅했습니다. 현재 동작입니다. 1) WebMethod를 호출하고 새 값으로 데이터베이스를 업데이트합니다. 2) 제안한 다시 게시를 수행합니다. 3) 이전 상태로 webform을 다시로드합니다. 실제로는 DB에서 변경을가했지만 이전 GridView 행 순서로 다시로드합니다. 이것은 수동으로 정보를 선택하여 확인할 수 있습니다. 다른 아이디어는 높게 평가 될 것입니다. – aleafonso

+1

결국 UpdatePanel에 대한 OnLoad 이벤트를 만들고 거기에서 GridView를 리 바인드하여이를 수행 할 수있었습니다. 만약 당신이 대답에 그것을 추가 할 수 있으면 멋질 것입니다. 고마워. – aleafonso

+0

미안하지만, 나는 그것을 놓쳤다. 내 대답을 업데이트했습니다. – onof

관련 문제