2013-02-18 7 views
0

나는 asp.net 프로젝트에서 webmethod 내가 jquery 아약스 메서드에서 listview 전달하려면하지만 지금은 어떻게 listview 요소를 감지하고 them.folowing 코드를 사용하여 내 C# code.bt 수 있습니다. 난 괜찮아요 당신이 DataTable이 있고 Ajax를 사용하여 결과를 표시하는 일부 자바 스크립트이 DataTable의 결과를 전달하려는 가정 해 봅시다 jQuery 코드를목록 (일반) jquery를 사용하여

if (ck != null) 
{ 
     reqnum[0, 0] = "@RequestingBranchID"; 
     reqnum[0, 1] = ck["BranchID"]; 
     reqnum[1, 0] = "@ProviderBranchID"; 
     reqnum[1, 1] = customer.ToString(); 
     DataTable dt = SqlCommands.FillData(out OutStatus, out OutMessage, "BSD.SW_Boxes_StockOfProviderAndRequestingBranch", CommandType.StoredProcedure, reqnum); 
     List<DataRow> rows = dt.Rows.Cast<DataRow>().ToList(); 
     int x=rows.Count; 
     return rows; 
} 
+0

jquery를 사용하여 listview에서 선택한 값을 전달 하시겠습니까? – Zaki

+0

아니요 jQuery 아약스로 웹 메소드를 통해 datatable을 전달하고 싶지만 목록을 사용했습니다 – heavy

+0

C# 코드에서 일부 자바 스크립트 함수로 목록을 전달 하시겠습니까 ?? 또는 당신은 반대를 원한다? –

답변

0

이 필요합니다. 첫 번째 단계는이 결과를 JSON 형식으로 변환해야한다는 것입니다. 당신은

public string GetJson(DataTable dt) 
{ 
    System.Web.Script.Serialization.JavaScriptSerializer serializer = new System.Web.Script.Serialization.JavaScriptSerializer(); 
    List<Dictionary<string, object>> rows = new List<Dictionary<string, object>>(); 
    Dictionary<string, object> row = null; 

    foreach (DataRow dr in dt.Rows) { 
     row = new Dictionary<string, object>(); 
     foreach (DataColumn col in dt.Columns) { 
      row.Add(col.ColumnName, dr[col]); 
     } 
     rows.Add(row); 
    } 
    return serializer.Serialize(rows); 
} 

다음 단계는 자바 스크립트의 결과 JSON 문자열을 구문 분석하기 위해 다음과 같은 방법 ::입니다 수 그리고 난이 쉬운 부분 같아요. 이 질문을 확인하여 JSON 문자열을 오브젝트 Safely turning a JSON string into an object으로 구문 분석하는 방법을 찾으십시오. 알고 싶다면 더 자세히 알려주십시오.

0

JSON.NET을 사용하면 datatable을 JSON에 직렬화 할 수 있습니다. 그런 다음 ajax를 사용하여 webmethod를 호출하십시오. 서버 측에서

,
[WebMethod] 
[ScriptMethod(ResponseFormat = ResponseFormat.Json)] 
public static string GetList(int branchID, string customer) 
{ 
    // do your code here 
    reqnum[0, 0] = "@RequestingBranchID"; 
    reqnum[0, 1] = branchID; 
    reqnum[1, 0] = "@ProviderBranchID"; 
    reqnum[1, 1] = customer; 
    DataTable dt = SqlCommands.FillData(out OutStatus, out OutMessage, "BSD.SW_Boxes_StockOfProviderAndRequestingBranch", CommandType.StoredProcedure, reqnum); 
    if(dt!=null) 
    { 
      return Newtonsoft.Json.JsonConvert.SerializeObject(dt); 
    } 
    else{ 
     //return "[]"; 
    } 
} 

그런 다음 스크립트에 메서드를 호출하는 방법에 대한 매개 변수를 전달합니다.

$(function(){}); 
    $('#myButton').click(function() { 
     $.ajax({ 
      type: "POST", 
      url: "YourPage.aspx/GetList", 
      data: "{'branchID':" + branchID + ",'customer':" + customer + "}", 
      contentType: "application/json; charset=utf-8", 
      dataType: "json", 
      success: function (data) { 
       var jsonResult = $.parseJSON(data.d); 
       // do your client side code here 
      } 
     }); 
    }); 
}); 

참고 : 웹 서비스를 사용하지 않는 경우/뒤에 코드에서 메소드를 작성, 수업 전에 [ScriptService] 장식을 사용하여 다음과 같은 네임 스페이스를 포함한다.

using System.Web.Script.Services; 
using System.Web.Services; 
관련 문제