2012-02-23 60 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