2011-05-09 2 views
0

asp:listbox의 항목을 데이터 집합으로 내보내는 가장 쉬운 방법은 무엇입니까? 이것은 빠른 방법을 생각할 수 없다, 상관없이 당신이 그것을 채우는 방법을 작동합니다 상당히 정직 방법입니다목록 상자 항목을 데이터 집합으로 내보내기

+1

처음에 목록 상자에 항목을 가져 오는 중입니까? 그들은 하드 코드 또는 databound 있습니까? –

+0

두 비트 모두 (!) 그게 문제입니다. 목록 상자의 모든 항목은 자체 또는 그룹의 다른 목록 상자에서 복사되었습니다. 이 원래의 목록 상자는 데이터 바인딩되었습니다. – Urbycoz

+0

좋아, 내 대답을 참조하십시오, 모든 라운드 작동합니다 –

답변

1

...

public static DataTable GetListBoxItems(ListBox listBox) 
    { 
     DataTable dt = new DataTable(); 
     dt.Columns.Add("Value"); 
     dt.Columns.Add("Text"); 
     dt.Columns.Add("Selected"); 
     dt.Columns.Add("Attributes"); 


     foreach (ListItem itm in listBox.Items) 
     { 
      DataRow dr = dt.NewRow(); 
      dr[0] = itm.Value; 
      dr[1] = itm.Text; 
      dr[2] = itm.Selected; 
      dr[3] = itm.Attributes; 
      dt.Rows.Add(dr); 
     } 
     return dt; 
    } 

또는 확장 방법

:

public static class Extensions 
    { 
     public static DataTable GetListBoxItems(this ListBox listBox) 
     { 
      DataTable dt = new DataTable(); 

      dt.Columns.Add("Value"); 
      dt.Columns.Add("Text"); 
      dt.Columns.Add("Selected"); 
      dt.Columns.Add("Attributes"); 


      foreach (ListItem itm in listBox.Items) 
      { 
       DataRow dr = dt.NewRow(); 
       dr[0] = itm.Value; 
       dr[1] = itm.Text; 
       dr[2] = itm.Selected; 
       dr[3] = itm.Attributes; 
       dt.Rows.Add(dr); 
      } 
      return dt; 
     } 
    } 

다음과 같이 호출 할 수 있습니다.

ListBox1.GetListBoxItems(); 
관련 문제