PDA

View Full Version : سوال: چگونه چند ستون از دیتاگریدویو (DataGridView) رو ادغام کنم



tahamoqaddam
چهارشنبه 23 بهمن 1398, 22:25 عصر
سلام دوستان من می خوام چند ستون از یک دیتاگرید رو ادغام کنم چند نمونه پیدا کردم که اونا فقط border ها رو hiden می کنن
ولی یه برنامه پیدا کردم که دقیقا عمل ادغام رو انجام میده (اونطور که در شکلش نشون داده پایین صفحه) ولی من این برنامه رو کپی می کنم کلی خطا میده مثلا RowsHierarchy و ColumnsHierarchy اصلا نمیشناسه لطفا راهنمایی کنید
این لینک اون سایت هستش که کد ها از اونجا کپی شدن اینجا
http://viblend.com/blog/post/2012/01/04/WinForms-Grid-with-Merged-Cells.aspx
ممنون
private vDataGridView grid = new vDataGridView();

public Form1()
{
InitializeComponent();
grid.Dock = DockStyle.Fill;
grid.VIBlendTheme = VIBLEND_THEME.NERO;
this.Controls.Add(grid);
this.LoadData();
this.MergeCells();
this.SetCellsValues();
}
private void LoadData()
{
// add columns.
for (int i = 1; i <= 8; i++)
{
grid.ColumnsHierarchy.Items.Add("Column " + i);
}
// add rows.
for (int i = 1; i <= 25; i++)
{
grid.RowsHierarchy.Items.Add("Row " + i);
}

grid.RowsHierarchy.AutoResize();
grid.ColumnsHierarchy.AutoResize();
grid.Refresh();
}
private void SetCellsValues()
{
HierarchyItem rowItem1 = grid.RowsHierarchy.Items[0];
HierarchyItem columnItem1 = grid.ColumnsHierarchy.Items[0];

grid.CellsArea.SetCellValue(rowItem1, columnItem1, "Monthly Housing and Transportation Expenses");
grid.CellsArea.SetCellValue(grid.RowsHierarchy.Ite ms[1], columnItem1, "Primary residence");
grid.CellsArea.SetCellValue(grid.RowsHierarchy.Ite ms[1], this.grid.ColumnsHierarchy.Items[3], "Transportation Expenses");
// fill data

grid.CellsArea.SetCellValue(this.grid.RowsHierarch y.Items[2], columnItem1, "Mortgage Payment");
grid.CellsArea.SetCellValue(this.grid.RowsHierarch y.Items[3], columnItem1, "Property Tax");
grid.CellsArea.SetCellValue(this.grid.RowsHierarch y.Items[4], columnItem1, "Insurance");
grid.CellsArea.SetCellValue(this.grid.RowsHierarch y.Items[5], columnItem1, "Electricity");
grid.CellsArea.SetCellValue(this.grid.RowsHierarch y.Items[6], columnItem1, "Water");
grid.CellsArea.SetCellValue(this.grid.RowsHierarch y.Items[7], columnItem1, "Cabel TV Service");
grid.CellsArea.SetCellValue(this.grid.RowsHierarch y.Items[8], columnItem1, "High Speed Internet");

// fill second column data.
HierarchyItem columnItem2 = this.grid.ColumnsHierarchy.Items[1];
grid.CellsArea.SetCellValue(this.grid.RowsHierarch y.Items[2], columnItem2, "$1,459,76");
grid.CellsArea.SetCellValue(this.grid.RowsHierarch y.Items[3], columnItem2, "$212.54");
grid.CellsArea.SetCellValue(this.grid.RowsHierarch y.Items[4], columnItem2, "$49.21");
grid.CellsArea.SetCellValue(this.grid.RowsHierarch y.Items[5], columnItem2, "$73.44");
grid.CellsArea.SetCellValue(this.grid.RowsHierarch y.Items[6], columnItem2, "$41.48");
grid.CellsArea.SetCellValue(this.grid.RowsHierarch y.Items[7], columnItem2, "$22.14");
grid.CellsArea.SetCellValue(this.grid.RowsHierarch y.Items[8], columnItem2, "$24.99");

// fill third column data.

HierarchyItem columnItem3 = this.grid.ColumnsHierarchy.Items[3];
grid.CellsArea.SetCellValue(this.grid.RowsHierarch y.Items[2], columnItem3, "Vehicle 1 Payment");
grid.CellsArea.SetCellValue(this.grid.RowsHierarch y.Items[3], columnItem3, "Vehicle 1 Insurance");
grid.CellsArea.SetCellValue(this.grid.RowsHierarch y.Items[4], columnItem3, "Vehicle 1 Gas");
grid.CellsArea.SetCellValue(this.grid.RowsHierarch y.Items[5], columnItem3, "Vehicle 1 Maintenance");
grid.CellsArea.SetCellValue(this.grid.RowsHierarch y.Items[6], columnItem3, "Vehicle 2 Lease");
grid.CellsArea.SetCellValue(this.grid.RowsHierarch y.Items[7], columnItem3, "Vehicle 2 Insurance");
grid.CellsArea.SetCellValue(this.grid.RowsHierarch y.Items[8], columnItem3, "Vehicle 2 Gas");
grid.CellsArea.SetCellValue(this.grid.RowsHierarch y.Items[9], columnItem3, "Vehicle 2 Maintenance");

// fiil fourth column data.
HierarchyItem columnItem4 = this.grid.ColumnsHierarchy.Items[4];
grid.CellsArea.SetCellValue(this.grid.RowsHierarch y.Items[2], columnItem4, "$351,34");
grid.CellsArea.SetCellValue(this.grid.RowsHierarch y.Items[3], columnItem4, "$55.12");
grid.CellsArea.SetCellValue(this.grid.RowsHierarch y.Items[4], columnItem4, "$129.21");
grid.CellsArea.SetCellValue(this.grid.RowsHierarch y.Items[5], columnItem4, "$55.17");
grid.CellsArea.SetCellValue(this.grid.RowsHierarch y.Items[6], columnItem4, "$311.12");
grid.CellsArea.SetCellValue(this.grid.RowsHierarch y.Items[7], columnItem4, "$109.35");
grid.CellsArea.SetCellValue(this.grid.RowsHierarch y.Items[8], columnItem4, "$114.99");
grid.CellsArea.SetCellValue(this.grid.RowsHierarch y.Items[9], columnItem4, "$35.19");
}
private void MergeCells()
{
HierarchyItem rowItem1 = grid.RowsHierarchy.Items[0];
HierarchyItem columnItem1 = grid.ColumnsHierarchy.Items[0];

// create a custom cell style.
GridCellStyle style = new GridCellStyle();
style.FillStyle = new FillStyleSolid(Color.FromArgb(255, 0, 175, 240));
style.Font = new Font(this.Font.FontFamily, 11.0f, FontStyle.Bold);
style.TextColor = Color.White;

GridCellStyle orangestyle = new GridCellStyle();
orangestyle.FillStyle = new FillStyleSolid(Color.FromArgb(255, 254, 122, 1));
orangestyle.Font = new Font(this.Font.FontFamily, 10.0f, FontStyle.Bold);
orangestyle.TextColor = Color.White;

grid.CellsArea.SetCellTextAlignment(rowItem1, columnItem1, ContentAlignment.MiddleCenter);
// set the cell span to 1 row and 5 columns.
grid.CellsArea.SetCellSpan(rowItem1, columnItem1, 1, 5);
// set the merged cell value and style.
grid.CellsArea.SetCellDrawStyle(rowItem1, columnItem1, style);
// set the cell span to 1 row and 2 columns.
grid.CellsArea.SetCellSpan(grid.RowsHierarchy.Item s[1], columnItem1, 1, 3);
grid.CellsArea.SetCellDrawStyle(grid.RowsHierarchy .Items[1], columnItem1, orangestyle);
// set the merged cell value.
// set the cell span to 1 row and 2 columns.
grid.CellsArea.SetCellSpan(grid.RowsHierarchy.Item s[1], this.grid.ColumnsHierarchy.Items[3], 1, 2);
// set the merged cell value.
grid.CellsArea.SetCellDrawStyle(grid.RowsHierarchy .Items[1], this.grid.ColumnsHierarchy.Items[3], orangestyle);
}


http://viblend.com/blog/image.axd?picture=WinForms-GridView-Merged-Cells.png

the king
پنج شنبه 24 بهمن 1398, 00:25 صبح
سلام دوستان من می خوام چند ستون از یک دیتاگرید رو ادغام کنم چند نمونه پیدا کردم که اونا فقط border ها رو hiden می کنن
ولی یه برنامه پیدا کردم که دقیقا عمل ادغام رو انجام میده (اونطور که در شکلش نشون داده پایین صفحه) ولی من این برنامه رو کپی می کنم کلی خطا میده مثلا RowsHierarchy و ColumnsHierarchy اصلا نمیشناسه لطفا راهنمایی کنید
این لینک اون سایت هستش که کد ها از اونجا کپی شدن اینجا
http://viblend.com/blog/post/2012/01/04/WinForms-Grid-with-Merged-Cells.aspx
ممنون

کدی که پیدا کردید برای vDataGridView نوشته شده، نه DataGridView. یک کنترل با قابلیت های متفاوت ئه. یعنی این محصول viblend (http://www.viblend.com/products/net/windows-forms/controls/gridview.aspx)

tahamoqaddam
پنج شنبه 24 بهمن 1398, 15:44 عصر
دوست عزیز من چطوری می تونم چند تا ستون رو ادغام کنم به نحوی که متن نوشته شده در وسط خانه های ادغام شده قرار گیرد لطفا راهنمایی کنید

the king
پنج شنبه 24 بهمن 1398, 20:09 عصر
دوست عزیز من چطوری می تونم چند تا ستون رو ادغام کنم به نحوی که متن نوشته شده در وسط خانه های ادغام شده قرار گیرد لطفا راهنمایی کنید

دوست عزیز با وراثت از DataGridView و اضافه کردن روتین رسم اختصاصی می توانید اینکار رو انجام بدید :

151362

151361