2014-05-12 4 views
1

clientside에서 gridview에 데이터를 바인딩하려고합니다. 아래는 js입니다. 작동하지만 버튼을 두 번째 클릭하면 모든 행의 값이 변경됩니다.클라이언트 측의 gridview에 데이터 바인딩

function databind(response) { 
     var xmlDoc = $.parseXML(response); 
     var xml = $(xmlDoc); 
     var Positions = xml.find("Table"); 
     var row = $("[id*=gridview] tr:last-child"); 
     $("[id*=gridview] tr").not($("[id*=gridview] tr:first-child")).remove(); 
     $.each(Positions, function() { 
      var Position = $(this); 
       $("td", row).eq(0).html('<a id="lkedit" style="font-weight:bold;text-decoration:underline;cursor:pointer;color:Blue; ">Edit</a>'); 
       $("td", row).eq(1).html('<a id="lkdelete" onclick="SingleDel(this)" style="font-weight:bold;text-decoration:underline;cursor:pointer;color:Blue; ">Delete</a>'); 

       $("td", row).eq(2).html('<input type="checkbox" onclick="javascript:Selectchildcheckboxes();" id="chkRow"/>'); 
       $("td", row).eq(3).html('<span id="lblpfid">'+Position.find("pfid").text()+'<span/>'); 

       $("td", row).eq(4).html('<span id="lblpfname">'+Position.find("pfname").text()+'<span/>'); 

       $("td", row).eq(5).html('<span id="lblposid">'+Position.find("positionid").text()+'<span/>'); 

       $("td", row).eq(6).html('<span id="lbldisposid">'+Position.find("disposid").text()+'<span/>');//DataItem.disposid 
       $("td", row).eq(7).html('<span id="lbltype">'+Position.find("type").text()+'<span/>');  //type 

       $("td", row).eq(8).html('<span id="lblcur">'+Position.find("ccy").text()+'<span/>');  //ccy 
      $("[id*=gridview]").append(row); 
      row = $("[id*=gridview] tr:last-child").clone(true); 
     }); 
} 

로드 페이지에 빈 행이 추가됩니다.

내를 Page_Load 방법은,

Sub Page_load() 
     BindDummyRow 
End Sub 
Private Sub BindDummyRow() 
    Dim dummy As New DataTable() 

    dummy.Columns.Add("pfid") 
    dummy.Columns.Add("pfname") 
    dummy.Columns.Add("positionid") 
    dummy.Columns.Add("disposid") 
    dummy.Columns.Add("type") 
    dummy.Columns.Add("ccy") 
    dummy.Rows.Add() 
    gridview.DataSource = dummy 
    gridview.DataBind() 
End Sub 

나는 실수가 발생하는 위치 잘 모릅니다.

+1

두 번째 클릭시 같은 값이 그리드에 바인딩되지 않는다는 것을 의미합니까? 여분의 열이나 행을 얻습니까? –

+0

예. 또한 첫 번째로 바인딩 된 모든 행이 변경됩니다 (예 : 첫 번째 셀의 값은 다섯 번째 셀에 있습니다). –

+0

자세한 정보를 제공해야합니다. 어떤 버튼을 두 번째로 클릭 했습니까? 데이터가 어떻게 다시 돌아 오나요?! 올바르게 반입되고 있습니까? – deostroll

답변

0

다음과 같이 변경하십시오. 마지막 자식을 복제하기 때문에 추가 행이 추가되었습니다. 마지막 자식을 last.com 및 마지막 행으로 변경합니다.

function databind(response) { 
    var xmlDoc = $.parseXML(response); 
    var xml = $(xmlDoc); 
    var Positions = xml.find("Table"); 
    var row = $("[id*=gridview] tr:last"); 
    $("[id*=gridview] tr").not($("[id*=gridview] tr:first-child")).remove(); 
    $.each(Positions, function() { 
     var Position = $(this); 
      $("td", row).eq(0).html('<a id="lkedit" style="font-weight:bold;text-decoration:underline;cursor:pointer;color:Blue; ">Edit</a>'); 
      $("td", row).eq(1).html('<a id="lkdelete" onclick="SingleDel(this)" style="font-weight:bold;text-decoration:underline;cursor:pointer;color:Blue; ">Delete</a>'); 

      $("td", row).eq(2).html('<input type="checkbox" onclick="javascript:Selectchildcheckboxes();" id="chkRow"/>'); 
      $("td", row).eq(3).html('<span id="lblpfid">'+Position.find("pfid").text()+'<span/>'); 

      $("td", row).eq(4).html('<span id="lblpfname">'+Position.find("pfname").text()+'<span/>'); 

      $("td", row).eq(5).html('<span id="lblposid">'+Position.find("positionid").text()+'<span/>'); 

      $("td", row).eq(6).html('<span id="lbldisposid">'+Position.find("disposid").text()+'<span/>');//DataItem.disposid 
      $("td", row).eq(7).html('<span id="lbltype">'+Position.find("type").text()+'<span/>');  //type 

      $("td", row).eq(8).html('<span id="lblcur">'+Position.find("ccy").text()+'<span/>');  //ccy 
     $("[id*=gridview]").append(row); 
     // row = $("[id*=gridview] tr:last-child").clone(true); 
    }); 
} 
+0

어이 awsome. 나는 오랫동안이 코드에 문제가 생기고있었습니다. 이제 당신은 그것을 깨뜨 렸습니다. 감사. –

관련 문제