PDA

View Full Version : سوال: گروه بندی چند ستون از DatagridView با یک عنوان مشترک



pesare
یک شنبه 20 مرداد 1392, 16:46 عصر
سلام دوستان

گروه بندی چند ستون از DatagridView با یک عنوان مشترک امکانپذیر هست؟

parvizwpf
یک شنبه 20 مرداد 1392, 17:50 عصر
کامل تر بیان کنید.

khokhan
یک شنبه 20 مرداد 1392, 18:02 عصر
سلام دوستان

گروه بندی چند ستون از DatagridView با یک عنوان مشترک امکانپذیر هست؟
با سلام
در این لینک (http://10tec.com/winforms-grid/row-grouping.aspx) یه کامپوننت آماده هست که می توانید به آسانی توی پروژه هاتون اضافه کنید و استفاده نمائید

نحوه استفاده از کلاس به همراه نمونه آماده از نحوه به کارگیری رو هم می تونید در همانجا پیدا کنید

pesare
یک شنبه 20 مرداد 1392, 18:06 عصر
میخوام چند تا از ستونهای دیتا گرید دارای یک گروه اصلی باشه و بعد در یک سطح پایین تر نام هر ستون بیاد , مثلا در سطح اول یه عنوان باشه مثل نوع آزمون , بعد به دو ستون تبدیل بشه یه ستون بشه آزمون تستی و ستون دیگه بشه آزمون تشریحی

malizergani
یک شنبه 20 مرداد 1392, 18:07 عصر
سلام دوست عزیز

این کار با کنترل های دات نت امکان پذیر نیست مگر شما برنامه نویسی شیء گرا بلد باشی.

ولیکن شما میتونید از کامپپوننت ها استفاده کنید

pesare
یک شنبه 20 مرداد 1392, 18:09 عصر
ممنون از جوابتون , اما این سورس , Row Grouping میکنه , من Culomn Grouping میخوام


با سلام
در این لینک (http://10tec.com/winforms-grid/row-grouping.aspx) یه کامپوننت آماده هست که می توانید به آسانی توی پروژه هاتون اضافه کنید
و استفاده نمائید

نحوه استفاده از کلاس به همراه نمونه آماده از نحوه به کارگیری رو هم می تونید در همانجا پیدا کنید

pesare
یک شنبه 20 مرداد 1392, 18:12 عصر
اگه از DotNetBar استفاده کنم و یه کنترل DataGridViewX بزارم چطوری باید خاصیت Column Grouping رو ایجاد کنم؟


سلام دوست عزیز

این کار با کنترل های دات نت امکان پذیر نیست مگر شما برنامه نویسی شیء گرا بلد باشی.

ولیکن شما میتونید از کامپپوننت ها استفاده کنید

khokhan
یک شنبه 20 مرداد 1392, 18:55 عصر
اگه از DotNetBar استفاده کنم و یه کنترل DataGridViewX بزارم چطوری باید خاصیت Column Grouping رو ایجاد کنم؟
یه گرید داخل فرمتون بگزارین و این کد ها رو در رویداد لود فرم قرار دهید ::لبخند:


private void Form1_Load(object sender, EventArgs e)
{
this.dataGridView1.Columns.Add("JanWin", "Win");

this.dataGridView1.Columns.Add("JanLoss", "Loss");

this.dataGridView1.Columns.Add("FebWin", "Win");

this.dataGridView1.Columns.Add("FebLoss", "Loss");

this.dataGridView1.Columns.Add("MarWin", "Win");

this.dataGridView1.Columns.Add("MarLoss", "Loss");



for (int j = 0; j < this.dataGridView1.ColumnCount; j++)
{

this.dataGridView1.Columns[j].Width = 45;

}

this.dataGridView1.ColumnHeadersHeightSizeMode =

DataGridViewColumnHeadersHeightSizeMode.EnableResi zing;

this.dataGridView1.ColumnHeadersHeight =

this.dataGridView1.ColumnHeadersHeight * 2;

this.dataGridView1.ColumnHeadersDefaultCellStyle.A lignment =

DataGridViewContentAlignment.BottomCenter;

this.dataGridView1.CellPainting += new

DataGridViewCellPaintingEventHandler(dataGridView1 _CellPainting);

this.dataGridView1.Paint += new PaintEventHandler(dataGridView1_Paint);



}



void dataGridView1_Paint(object sender, PaintEventArgs e)
{

string[] monthes = { "January", "February", "March" };

for (int j = 0; j < 6; )
{

//get the column header cell

Rectangle r1 = this.dataGridView1.GetCellDisplayRectangle(j, -1, true);



r1.X += 1;

r1.Y += 1;

r1.Width = r1.Width * 2 - 2;

r1.Height = r1.Height / 2 - 2;

e.Graphics.FillRectangle(new

SolidBrush(this.dataGridView1.ColumnHeadersDefault CellStyle.BackColor), r1);

StringFormat format = new StringFormat();

format.Alignment = StringAlignment.Center;

format.LineAlignment = StringAlignment.Center;

e.Graphics.DrawString(monthes[j / 2],

this.dataGridView1.ColumnHeadersDefaultCellStyle.F ont,

new SolidBrush(this.dataGridView1.ColumnHeadersDefault CellStyle.ForeColor),

r1,

format);

j += 2;

}

}



void dataGridView1_CellPainting(object sender, DataGridViewCellPaintingEventArgs e)
{

if (e.RowIndex == -1 && e.ColumnIndex > -1)
{

e.PaintBackground(e.CellBounds, false);



Rectangle r2 = e.CellBounds;

r2.Y += e.CellBounds.Height / 2;

r2.Height = e.CellBounds.Height / 2;

e.PaintContent(r2);

e.Handled = true;

}

}
}

pesare
یک شنبه 20 مرداد 1392, 22:31 عصر
Mr khokhan کد های شما جواب داد اما یکم پیچیدست , راه حل ساده تری وجود نداره؟

pesare
دوشنبه 21 مرداد 1392, 11:42 صبح
کسی راه حل ساده تری نداره؟

khokhan
دوشنبه 21 مرداد 1392, 13:46 عصر
کسی راه حل ساده تری نداره؟
یه راه دیگه اینه که ردیف اول گریدتون رو از طریق انجماد ثابت کنین و از طریق کد نویسی مقادیری بهش اختصاص بدین تا به عنوان یرستون فرعی درآید

pesare
دوشنبه 21 مرداد 1392, 14:27 عصر
یه راه دیگه اینه که ردیف اول گریدتون رو از طریق انجماد ثابت کنین و از طریق کد نویسی مقادیری بهش اختصاص بدین تا به عنوان یرستون فرعی درآید

چطوری باید اینکار رو انجام بدم؟