2012-02-23 64 views
0

我想說明單列值的GridView不同的列不同的列值..顯示,從單個列

例如: 我列的值是「事假:12病假:13年假: 03" .. 我要拆上面的字符串值,並且在這樣的網格colulmn顯示上述數值...

Employee Id Employee Name Casual Leave  Medical Leave Annual Leave 

00624323  James   12    13    03 
00624324  Fernando  12    14    05 

注:員工標識和僱員姓名是不同的列

我的部分代碼在這裏:

DataSet5TableAdapters.sp_getallempleaveTableAdapter TA = new DataSet5TableAdapters.sp_getallempleaveTableAdapter(); 
DataSet5.sp_getallempleaveDataTable DS = TA.GetData(); 
     if (DS.Rows.Count > 0) 
     { 
      DataView datavw = new DataView(); 
      datavw = DS.DefaultView; 
      datavw.RowFilter = "fldempid='" + txtempid.Text + "' and fldempname='" + txtempname.Text + "'"; 
      if (datavw.Count > 0) 
      { 
       string leavehistory = Convert.ToString(datavw[0]["fldleavehistory"]); 
       string[] textarray = leavehistory.Split('-'); 
       foreach (string samtext in textarray) 
       { 
        if (samtext.StartsWith(leavehistory))// I want to check the string with array value 
        { 
         string newtext = samtext.Split(':')[1]; 
        } 
       } 

      } 
     } 

我該怎麼辦?請幫我解決這個問題

+0

既然你有拆分字符串的邏輯,爲什麼不把它們推入到網格的''''''''''''''''''''''''' – V4Vendetta 2012-02-23 06:15:05

回答

0

在你的數據庫中有這樣的複合列從來就不是一個好主意。爲什麼不把這一列分成3列(CasualLeave,MedicalLeave和AnnualLeave),每列都包含一個數字?

+0

根據公司要求動態創建。然後只有我問.. – Fernando 2012-02-23 06:11:44

0

使用歷史記錄和newtext,你可以創建一個數據表並將其綁定到gridview,或者你可以改變你的sp直接返回拆分結果。

因爲u必須在客戶端編碼這麼多側面的,現在更好地使一個新的DataTable和飼料行到它,這個數據表添加到gridsource

編輯: -

例子: -

DataTable newdatatable = new DataTable("New"); 
newdatatable.Columns.Add("Employee Id"); 
newdatatable.Columns.Add("Employee Name"); 
newdatatable.Columns.Add("Casual Leave"); 
newdatatable.Columns.Add("Medical Leave");  
newdatatable.Columns.Add("Annual Leave"); 
newdatatable.AcceptChanges(); 
DataSet5TableAdapters.sp_getallempleaveTableAdapter TA = new DataSet5TableAdapters.sp_getallempleaveTableAdapter();  
DataSet5.sp_getallempleaveDataTable DS = TA.GetData(); 
if (DS.Rows.Count > 0) 
{ 
     DataView datavw = new DataView(); 
     datavw = DS.DefaultView; 
     datavw.RowFilter = "fldempid='" + txtempid.Text + "' and fldempname='" + txtempname.Text + "'"; 
     if (datavw.Count > 0) 
     { 
      string leavehistory = Convert.ToString(datavw[0]["fldleavehistory"]); 
      string[] textarray = leavehistory.Split('-');DataRow drow = newdatatable.NewRow(); 
        drow[0]=txtempid.Text; 
        drow[1]=txtempname.Text; 
      foreach (string samtext in textarray) 
      { 
       if (samtext.StartsWith(leavehistory))// I want to check the string with array value 
       {       
        drow[samtext.Split(':')[0]]=samtext.Split(':')[1]; 
       } 
      } 
      newdatatable.Rows.Add(drow); 
      newdatatable.AcceptChanges(); 
     } 
} 
gridview1.DataSource=newdatatable; 
+0

可以給我一個例子.. – Fernando 2012-02-23 06:19:29

+0

請檢查編輯.P.S。我現在沒有開發環境。但是,如果稍作改動,我猜測代碼應該可以工作。對不起如果我做了任何失誤。 – 2012-02-23 06:51:49