PDA

View Full Version : رويداد sortCompare در dataGridView



hamid_hr
دوشنبه 23 دی 1392, 17:42 عصر
سلام
چرا وقتي از طريق ديتا سورس به گريد اطلاعات ميديم اين رويداد SortCompare (زماني كه ميخوايم گريد رو sort كنيم) اجرا نميشه ولي وقتي به صورت دستي گريد رو پر ميكنيم (يعني مينويسيم dgv.rows.add(datarow); ) اين رويداد اجرا ميشه

fmehrvarzi
دوشنبه 23 دی 1392, 18:33 عصر
موقعی که اطلاعات بایند هست، بیایید از کامپوننت Binding Source برا مرتب سازی استفاده کنید

BindingSource Class (http://msdn.microsoft.com/en-us/library/system.windows.forms.bindingsource(v=vs.110).aspx)

BindingSource.Sort Property (http://msdn.microsoft.com/en-us/library/system.windows.forms.bindingsource.sort(v=vs.110). aspx)

hamid_hr
سه شنبه 24 دی 1392, 08:42 صبح
ممنون از پاسختون
منظورم از sort كليك روي ColumnHeader بود
زماني كه اطلاعات رو با متد Add اضافه ميكنيم و كاربر روي ColumnHeader كليك ميكنه رويداد SortComare اجرا ميشه
ولي وقتي با DataSource اطلاعاتو به گريد ميديم و كاربر روي ColumnHeader كليك ميكنه اين رويداد اجرا نميشه

goldoon
سه شنبه 24 دی 1392, 08:48 صبح
This event occurs only when the DataSource (http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.datasource%28v=v s.110%29.aspx) property is not set and the VirtualMode (http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.virtualmode%28v= vs.110%29.aspx) property value is false.
اگه دقت کنی خودش اعلام کرده که این رویداد فقط مال وقتیه که datasource تنظیم نکرده باشیم
منبع:
http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.sortcompare%28v= vs.110%29.aspx

hamid_hr
سه شنبه 24 دی 1392, 09:26 صبح
يعني راهي نداره؟

goldoon
سه شنبه 24 دی 1392, 09:32 صبح
والا من تجربه م کمتر از شماس
نمی دونم راهی داره یا نه
شاید اساتید سایت که بیان بتونن کمکت کنن
.
ولی حالا بگو میخای با این رویداد چکار کنی شاید بتونیم یجور دیگه پیادش کنیم

hamid_hr
سه شنبه 24 دی 1392, 09:34 صبح
ميخوام سطر اول تو مرتب سازي شركت نكنه
تو اين رويداد با يك خط كد ميشه اين كارو كرد

private void dgv_SortCompare(object sender, DataGridViewSortCompareEventArgs e)
{
if (e.RowIndex1 == 0 || e.RowIndex2 == 0)
e.Handled = true;
}