Отображаю колекцию своего класса Item в DataGridView
класс Item
| Код | public class Item { #region Private Data
// Первичный ключ товара private int id;
// Наименование товара private string name;
// Количество товара private int amount;
// Цена за единицу товара private double price;
// Цена умножить на кол-во товара // amount*price private double symmary;
// Ед. измерения товара (кг, м, штук, рулон) private Metrics metric;
// Необходимое количество на 1 диван private double need;
// Код категории (внешний ключ) private int category;
#endregion ...
|
Далее ручками создаю DataGridView
| Код | // Создание GridView private void CreateGridView() { // создал временный грид виев DataGridView newCategoryGridView = new DataGridView();
// подготовил его к заполнению newCategoryGridView.Rows.Clear(); newCategoryGridView.Refresh();
// Добавление столбцов и Привязка данных newCategoryGridView.DataSource = category.ItemList; //EditGridViewColumns(newCategoryGridView); // <--- тут хочу поменять колонки местами, как мне нужно, а не как было создано автоматически
// Добавляем созданный GridView к Контролам нашей Формы AddGridViewToComponents(newCategoryGridView); }
// Добавляем и настраиваем созданные GridView к Контролам нашей Формы private void AddGridViewToComponents(DataGridView dataGridView) { dataGridView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms. AnchorStyles.Bottom) | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); dataGridView.Visible = false; dataGridView.BorderStyle = BorderStyle.FixedSingle; dataGridView.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;
dataGridView.ReadOnly = true; //dataGridView. this.Controls.Add(dataGridView); }
|
Получилось вот так: http://ipicture.ru/
Хочу в методе EditGridViewColumns(DataGridView newCategoryGridView); - не показывать столбци Id, Category - упорядочить, тоесть Name, Amount... - добавить пару столбцов с кнопками http://ipicture.ru/
Сделал руками что то подобное:
| Код | private void EditGridViewColumns(DataGridView dataGridView, Category category) // в category храниться колекция ItemList состоящая из объектов класса Item {
dataGridView.AutoGenerateColumns = true;
// подготовил к заполнению //dataGridView.Rows.Clear(); //dataGridView.Refresh();
// создал столбцы грид виев dataGridView.Columns.Add("Name", "Наименование"); dataGridView.Columns.Add("Amount", "Количество"); dataGridView.Columns.Add("Metric", "Ед. имз."); dataGridView.Columns.Add("Price", "Цена"); dataGridView.Columns.Add("Summary", "Сумма");
// узнал количество Итемов if (category.ItemList.Count > 0) { // и создал нужное количество строк для данного ГридВиев dataGridView.Rows.Add(work.CategoryList[1].ItemList.Count - 1);
// инициализая счетчика итемов int itemCounter = 0; foreach (Item item in category.ItemList) { // создаю ячейки и помещаю в них данные текущего Итема dataGridView.Rows[itemCounter].Cells[0].Value = item.Name; dataGridView.Rows[itemCounter].Cells[1].Value = item.Amount; dataGridView.Rows[itemCounter].Cells[2].Value = item.Metric; dataGridView.Rows[itemCounter].Cells[3].Value = item.Price; dataGridView.Rows[itemCounter].Cells[4].Value = item.Symmary;
++itemCounter; } } // //DataGridViewButtonCell cell2 = new DataGridViewButtonCell();// = (DataGridViewButtonCell)row0.Cells[2]; //// dataGridView.Columns.Add(new DataGridViewColumn(new DataGridViewButtonCell()));
// //dataGridView.Columns[0].Site =
}
|
Что то мне подсказивает , что есть вариант проще типа dataGridView.Columns... и какой то метод отвечает, за место расположения колонки. Юзаю поиск с утра, не нашел подходящий ответ, статью http://www.rsdn.ru/article/dotnet/DataGridView20.xml прочитал, не помогло .
з.ы. Забыл добавить, что DavaGridView использую только для отображения, а не для редактирование, ReadOnly = true;
|