2017-05-15 2 views
0

바로 지금 이것은 내 코드이며 마지막으로 언급 한 테이블 만 데이터 바인딩합니다.어떻게 lisview에 두 개 이상의 테이블을 데이터 바인딩합니까

나는 "제품"과 "전화"2 테이블을 가지고 있으며, 나는 그들 모두 Listview1에 databind 싶습니다.

if (!IsPostBack) 
    { 
     ListView1.DataSource = this.GetDatatable2(); 
     ListView1.DataSource = this.GetData(); 
     ListView1.DataBind(); 
    } 

private DataSet GetData() 
{ 
    string conString = ConfigurationManager.ConnectionStrings["CARP"].ConnectionString; 
    string query = "SELECT * FROM Produtos WHERE Id= '" + Request.QueryString["Id"] + "'"; 
    SqlCommand cmd = new SqlCommand(query); 
    using (SqlConnection con = new SqlConnection(conString)) 
    { 
     using (SqlDataAdapter sda = new SqlDataAdapter()) 
     { 
      cmd.Connection = con; 
      sda.SelectCommand = cmd; 
      using (DataSet ds = new DataSet()) 
      { 
       sda.Fill(ds); 
       return ds; 
      } 
     } 
    } 
} 

private DataSet GetDatatable2() 
{ 
     string conString = ConfigurationManager.ConnectionStrings["CARP"].ConnectionString; 
     string query = "SELECT * FROM Phone WHERE Id= '" + Request.QueryString["Id"] + "'"; 
     SqlCommand cmd = new SqlCommand(query); 
     using (SqlConnection con = new SqlConnection(conString)) 
     { 
      using (SqlDataAdapter sda = new SqlDataAdapter()) 
      { 
       cmd.Connection = con; 
       sda.SelectCommand = cmd; 
       using (DataSet ds = new DataSet()) 
       { 
        sda.Fill(ds); 
        return ds; 
       } 
      } 
     } 
} 

미리 감사드립니다.

+0

몇 가지 예제 데이터를 제공하면 도움이됩니다. – johannesp

+0

테이블을 병합 할 수 있지만, 테이블이 동일한 스키마를 가지고있는 경우에만, 그렇지 않으면 두 테이블의 데이터를 결합하는 세 번째 테이블을 도입해야합니다. – Fabio

답변

0

두 번째 테이블 만 바인딩하는 이유는 테이블을 추가하지 않고 데이터 원본으로 설정한다는 것입니다.

= 대신 += 연산자를 사용하십시오.

하지만이 상황에서는 적절하지 않은 것 같습니다. 먼저 두 테이블을 병합해야한다고 생각합니다. 데이터 바인딩을 사용하면 ListView이 자동으로 열을 생성합니다. 따라서 두 테이블에 동일한 열 머리글이 필요합니다. 다른 것은 전혀 의미가 없습니다.

SQL UNION을 사용하여 한 테이블에서 두 테이블을 모두 선택할 수도 있습니다.

+0

감사합니다. –