Chris_St Ответов: 1

Как сделать так, чтобы предметы из списка в элементе управления datagridview


Эй,

моя проблема заключается в том, как я могу показать строки моего "списка операций", хранящиеся в "pD.Operations", как подсписок на datagridview ?


<pre>            dataGridViewPDM.DataSource = null;
            dataGridViewPDM.Rows.Clear();
            LblCount.Text = "";1
            //
            List<PdmObjectId> pdmObjects = new List<PdmObjectId>(TopSolidHost.Pdm.GetProjects(true, false));
            ProjectOps_TS ops_TS = new ProjectOps_TS();
            List<PDMparam> list = new List<PDMparam>();
            folder = comboBox1.SelectedItem.ToString();
            for (int i = 1; i < pdmObjects.Count; i++)
            {
                Cursor.Current = Cursors.WaitCursor;
                List<string> AFO = new List<string>();
                if (ops_TS.Read_projekt_with_sub(pdmObjects[i], folder, out artnr, out beschr, out znnr, out AFO))
                {
                    PDMparam pD = new PDMparam();
                    List<PDMparam> vs = new List<PDMparam>();
                    pD.Maschine = folder;
                    pD.Artikelnummer = artnr;
                    pD.Beschreibung = beschr;
                    pD.Zeichnungsnummer = znnr;
                    pD.PdmObjId = pdmObjects[i].Id;
                    pD.Operations = AFO;
                    vs.Add(pD);
                    list.AddRange(vs);
                }
            }
            var list_dgv = new BindingList<PDMparam>(list);
            //dataGrid1.DataSource = list_dgv;
            dataGridViewPDM.DataSource = list_dgv;
            LblCount.Text = list.Count + " Ordner";
            Cursor.Current = Cursors.Default;


<pre>public class PDMparam
    {
        public string Maschine { get; set; }
        public string Artikelnummer { get; set; }
        public string Beschreibung { get; set; }
        public string Zeichnungsnummer { get; set; }
        public string PdmObjId { get; set; }
        public List<string> Operations { get; set; }
    }


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

Я пробовал также компонент datagrid, это сработало бы, но я получаю не строковое значение, а только длину строки в списке<string>

Krunal Rohit

Разве так не должно быть?-
dataGridViewPDM.Источник данных = list_dgv;
dataGridViewPDM.DataBind();


КР.

Chris_St

Нет, DataBind предназначен для веб-форм, а не для Winforms.

1 Ответов

Рейтинг:
12

Mike V Baker

Если я правильно вас понял, когда вы говорите "подсписок", вам нужен полицейский участок.Элемент операций, который представляет собой список<string> Для отображения в виде сетки внутри сетки? Я не думаю, что вы получите то, что хотите, если не используете что-то вроде XtraGrid от DevExpress, потому что их сетка поддерживает вложенные сетки. Обычная сетка (насколько мне известно) не поддерживает ничего подобного.
Возможно, вы могли бы создать новое свойство PDMparam и назвать его OperationsList. Сделай что-нибудь вроде этого

public string OperationsList() { 
   get {
      return Operations.join(Envrionment.NEWLINE);
   }
}

Я не на 100% разбираюсь в синтаксисе там, набрал его по памяти и провел последние три года в Swift :)
В основном идея состоит в том, чтобы вернуть список операций в виде одной строки с возвратом каретки, чтобы создать многострочный список, который должен отображаться в ячейке сетки, придавая нужный вид. Конечно, вам придется установить многострочную возможность столбца сетки, и они не будут редактироваться.
Другой вариант, который я использовал раньше, - это соединение между двумя отдельными сетками. Когда пользователь выбирает элемент в сетке с помощью PDM, вы обновляете список Привязок для другой сетки с помощью списка операций.

ХТХ, Майк


Chris_St

Привет Майк,

Большое спасибо!. Это решение выводит меня на правильный путь... :)

Собственность должна быть именно такой.

общественного строка OperationsList
{
получить
{
зарегистрирован строка = строка.Join<string>(Environment.NewLine, Operations);
возвращение присоединился;
}
}