sekar305 Ответов: 1

Как получить одно значение столбца в столбец разделить несколько подряд


мне нужен один grivew разделения столбцов и отображение столбца множественные, основанные на условия

для бывших;

+------+----------------+----------+
|No    |code   |           qty     |
+------+----------------+----------+
|1055  |956,957,958,959 | 10,9,5,4 |


i need 

+------+----------------+----------+----------+
|No    |code1 |  code2|   code3  |  code4  |
+------+----------------+----------+----------+
|1055  |956   | 957     | 958      | 959   |
----------+----------+----------+----------+-


Что я уже пробовал:

я пробовал это кодирование для
Grid_CustomColumnDisplayText

свойства dev express gridview
if (e.Column.FieldName == "Product" || e.Column.FieldName == "Proddesc")
              {
                  var Prodvalue = e.Value;
                  string[] procol = Prodvalue.ToString().Split(';');

                  for (int i = 0; i < 5; i++)
                  {
                      string[] qtval = procol[i].Split('[');
                      string Qtval1 = qtval[1].Substring(0, qtval[1].Length - 1);

                      //  e.DisplayText = qtyvalue123;
                  }
                //  e.DisplayText = Qtval1 + "and " + qtval[i];
                  //  e.DisplayText = "test1";
              }

Maciej Los

Забудьте о сетке! Сосредоточьтесь на данных! Что является источником gridview: datatable, dataset,...?

1 Ответов

Рейтинг:
2

Maciej Los

Пожалуйста, сначала прочтите мой комментарий к этому вопросу. Как я уже упоминал, вы должны сосредоточиться на данных, а не на объекте gridview.

На первый взгляд у вас есть 2 способа добиться этого:
#1
Разделение данных на стороне сервера с помощью КТОС[^] или пользовательская функция[^].
разделить строку из столбца базы данных и отобразить ее в gridview[^]
получите 2-ю и 3-ю строки, разделив длинную строку с помощью T-Sql[^]

#2
Разделение данных на стороне клиента с помощью dataset (datatable) и Linq
LINQ Tutorial-Linq to strings с примерами.[^]

Взгляните на пример:

DataTable dt = new DataTable();

dt.Columns.Add(new DataColumn("No", typeof(int)));
dt.Columns.Add(new DataColumn("Code", typeof(string)));
dt.Columns.Add(new DataColumn("qty", typeof(string)));
dt.Rows.Add(new object[]{1055, "956,957,958,959", "10,9,5,4"});

var result = dt.AsEnumerable()
	.Select(x=>new
		{
			No = x.Field<int>("No"),
			Codes = x.Field<string>("Code")
				.Split(new string[]{","}, StringSplitOptions.RemoveEmptyEntries)
				.Select((a, b) => new
					{
						Index = b,
						Code = a
					}),
			Qty = x.Field<string>("qty")
		})
	.Select(x=>new
		{
			No = x.No,
			Code1 = x.Codes.Where(y=>y.Index==0).Select(z=>z.Code).SingleOrDefault(),
			Code2 = x.Codes.Where(y=>y.Index==1).Select(z=>z.Code).SingleOrDefault(),
			Code3 = x.Codes.Where(y=>y.Index==2).Select(z=>z.Code).SingleOrDefault(),
			Code4 = x.Codes.Where(y=>y.Index==3).Select(z=>z.Code).SingleOrDefault(),
			Qty = x.Qty
		})
	.ToList();
		
	result.Dump();


Как вы видите, статические заголовки были использованы в приведенном выше коде.


CHill60

Самое смешное в этом вопросе-это вопрос из того же ОП - Как выбрать результирующие строки в одном столбце В SQL server[^]- они изначально имели данные по отдельности и хотели, чтобы они были разделены запятыми. Я думаю, что им действительно нужен PIVOT

Maciej Los

Некоторые люди ленивы и не хотят писать свои собственные данные. ;)