PDA

View Full Version : سوال: عدم مرتب سازی datagridview در یک ستون



csharpdoost
پنج شنبه 01 تیر 1396, 21:25 عصر
با سلام
با کد های زیر دیتاگرید برای ستون اول درست اعمال نمیشه! اما برای دو ستون بعدی درست اعمال میشه.
فکر کنم برای مرتب اسزی تا 3 رقم رو میخونه.

foreach (DictionaryEntry entry2 in hs2)
{
dtcustom.Rows.Add();
dtcustom.Rows[row][0] = codcust;//codcust is int variable
dtcustom.Rows[row][1] = int.Parse(entry2.Key.ToString());
dtcustom.Rows[row][2] = int.Parse(entry2.Value.ToString());
row++;
}
dataGridView2.DataSource = dtcustom;

private void dataGridView2_ColumnHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{
if (comboBox2.SelectedIndex == 1)
{
if (e.ColumnIndex == 0)
this.dataGridView2.Sort(this.dataGridView2.Columns["کدمشتری"], ListSortDirection.Ascending);
else if (e.ColumnIndex == 1)
this.dataGridView2.Sort(this.dataGridView2.Columns["کدکالا"], ListSortDirection.Ascending);
else if (e.ColumnIndex == 2)
this.dataGridView2.Sort(this.dataGridView2.Columns["تعدادخرید"], ListSortDirection.Ascending);
}
else
{
if (e.ColumnIndex == 0)
this.dataGridView2.Sort(this.dataGridView2.Columns["کدمشتری"], ListSortDirection.Descending);
else if (e.ColumnIndex == 1)
this.dataGridView2.Sort(this.dataGridView2.Columns["کدکالا"], ListSortDirection.Descending);
else if (e.ColumnIndex == 2)
this.dataGridView2.Sort(this.dataGridView2.Columns["تعدادخرید"], ListSortDirection.Descending);
}
}

نتیجه مرتب سازی هم برای ستون اول میشه تصویر زیر :
145580

Mahmoud.Afrad
پنج شنبه 01 تیر 1396, 21:30 عصر
اگر کدمشتری از نوع رشته هست، درست sort شده. اگر میخواهید برحسب ترتیب عددی مرتب بشه باید کدمشتری به صورت عدد در آمده و به گرید اضافه کنید.

csharpdoost
پنج شنبه 01 تیر 1396, 22:54 عصر
تعجب من هم از اینه که عددی هستش نه رشته.
توی این خط هم چک کردم
dtcustom.Rows[row][0] = codcust;//codcust is int variable

csharpdoost
یک شنبه 04 تیر 1396, 08:37 صبح
با تغییر کد در تعریف نوع مقدار ستون مشکل حل شد:


DataTable dtcustom = new DataTable();

dtcustom.Columns.Add("کدمشتری", typeof(int));
dtcustom.Columns.Add("کدکالا", typeof(int));
dtcustom.Columns.Add("تعدادخرید", typeof(int));