2014-04-29 40 views
0

我有一個數據表,然後我將數據表的所有列名作爲複選框,我只想顯示那些用戶從複選框中選擇的列記錄:
下面是的代碼,但我沒有得到期望的結果複製一個數據表選擇列到另一個數據表

var values = ""; 
      string clmnm = ""; 
      for (int i = 0; i < interestedIN.Items.Count; i++) 
      { 
       if (interestedIN.Items[i].Selected) 
       { 
        values += interestedIN.Items[i].Value + ","; 
       } 
      } 

      values = values.TrimEnd(','); 
      string[] words = values.Split(','); 



      DataTable dt = new DataTable(); 
      dt = (DataTable)Session["dataset"]; 
      DataTable dt1 = new DataTable(); 
      foreach (string word in words) 
      { 
       dt1.Columns.Add(word, typeof(string)); 
       if (clmnm == string.Empty) 
       { 
        clmnm = word.Trim(); 
       } 
       else 
       { 
        clmnm += "," +word.Trim(); 
       } 
       } 
      foreach (DataRow dr in dt.Rows) 
      { 
       string[] split = clmnm.Split(','); 
       int j =0; 
       string str = ""; 
       string str2 = ""; 
       while(j < split.Length) 
       { 
        str = split[j].ToString(); 
        if (str2 == string.Empty) 
        { 
         str2 = "dr[\""+str.ToString()+"\"]"; 
        } 
        else 
        { 
         str2 += "," + "dr[\""+str.ToString()+"\"]"; 
        } 

        j+=1; 
       } 
       dt1.Rows.Add(str2);   
      } 

然後我想結果導出爲Excel工作表:但得到下面的Excel表:
enter image description here

+0

您是如何顯示結果的? 'GridView'? – Bharadwaj

+0

不,實際上我是將結果導出爲ex​​cel表格..我的意思是dt1表格.. – Srikanta

+0

我添加了一些更新.. – Srikanta

回答

1

有很多要做的改變喲你的代碼。讓我們從CheckBoxList的選定列開始。嘗試使用ListArray s來存儲用戶需要的列。像

List<string> columns = new List<string>();

選擇的欄目,然後存儲到columns列表。然後你需要添加列到你的新DataTabledt1。至於,

DataTable dt1 = new DataTable(); 
for (int i = 0; i < interestedIN.Items.Count; i++) 
{ 
    if (interestedIN.Items[i].Selected) //If user selected this columns checkbox. 
    { 
     columns.Add(interestedIN.Items[i].Text.Trim()); //Storing values to List. 
     dt1.Columns.Add(interestedIN.Items[i].Text.Trim()); //Adding columns to the DataTable. 
    } 
} 

然後你可以通過你的原始DataTabledt和存儲值如下循環。

foreach (DataRow dr in dt.Rows) 
{ 
    DataRow dr1 = dt1.NewRow(); // Create new row which should have identical structure for inserting. 
    foreach(string col in columns) 
    { 
     dr1(col) = dr(col); 
    } 
    dt1.Rows.Add(dr1); //Add the row with the contents to the table. 
} 
+0

給出異常:'「無法強制類型'System.Web.UI.WebControls.ListItem'的對象類型'System.Web.UI.WebControls.CheckBox'」。 – Srikanta

+0

@Srikanta我已經更新了我的答案 – Bharadwaj

+0

它在第一個foreach循環的if(chk.Selected)中給出了一個類似「對象不包含所選定義」的錯誤 – Srikanta

相關問題