显示与单列不同的列值

本文关键字:单列不 显示 | 更新日期: 2023-09-27 18:25:35

我想向gridview不同的列显示单列值。。

例如:我的栏值是"事假:12病假:13年假:03"。。我想拆分上面的字符串值,并在网格中显示上面的值,如下所示。。。

 Employee Id   Employee Name  Casual Leave     Medical Leave    Annual Leave
 00624323      James          12               13               03
 00624324      Fernando       12               14               05

注意:员工Id和员工姓名是不同的列

我的部分代码在这里:

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];
                    }
                }
            }
        }

我做什么?请帮我解决这个

显示与单列不同的列值

在数据库中使用这样的复合列从来都不是一个好主意。为什么不将该列拆分为3列(临时休假、医疗休假和年假),每列都包含一个数字?

使用leavehistory和newtext,您可以制作一个数据表并将其绑定到gridview,或者您可以更改sp以直接返回拆分的结果。

由于你在客户端已经编码了这么多,现在最好制作一个新的数据表,并向其中输入行,然后将该数据表添加到网格源

编辑:-

示例:-

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;