2012-02-23 5 views
0

Я хочу показать одно значение столбца GridView другого столбца ..показать другое значение столбца из одного столбца

Например: Моего значения столбца «Casual Leave: 12-Medical Leave: 13-Ежегодный отпуск: 03" .. я хочу разделить выше значение строки и показать вышеуказанные значения в сетке colulmn, как это ...

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

      } 
     } 

что я делаю? помогите мне решить эту проблему

+0

Поскольку у вас есть логика разделенной строки, почему бы не вставлять их в правильные ячейки в событии 'row databound' сетки? – V4Vendetta

ответ

0

Наличие такого составного столбца в вашей базе данных никогда не является хорошей идеей. Почему бы вам просто не разбить колонку на 3 столбца (CasualLeave, MedicalLeave и AnnualLeave), каждая из которых содержит номер?

+0

Это динамически основано на требованиях компании. Тогда только я спрашиваю .. – Fernando

0

С датировкой и новым текстом вы можете сделать datatable и привязать его к gridview или u можете изменить ваш sp, чтобы напрямую вернуть расколотый результат.

так как и закодированы так много в стороне клиента его теперь лучше сделать новый DataTable и подающие строки в него и добавить DataTable в gridsource

Edit: -

Пример: -

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

+0

Пожалуйста, проверьте Edit .P.S. Сейчас у меня нет среды для разработчиков. Но с небольшими изменениями, я думаю, код должен работать. Извините, если я сделал какие-то ошибки. –

Смежные вопросы