Sort نشدن datagridview بعد از استفاده از کوئری توسط لامبدا
با سلام
دیتاسورس گریدم رو از طریق لامبدا مقدار دهی کردم .
ولی الان که رویه ستونهاش کلیک میکنم Sort انجام نمیشه .
public List<TblPerson> GetAllPerson()
{
return db.TblPerson.OrderBy(c=>c.PersonCode).ToList();
}
void BindGrid()
{
using (UnitOfWork db = new UnitOfWork())
{
dataGridView1.AllowUserToOrderColumns = true;
dataGridView1.AutoGenerateColumns = false;
dataGridView1.DataSource = db.PersonRepository.GetAllPerson();
}
}
چطور میتونم مشکل رو حلش کنم ؟
قبلا با ADO کار میکردم و دیتاتیبل رو به عنوان دیتاسورس گرید میزاشتم و مشکلی نبود .
نقل قول: Sort نشدن دیتاگریدویو بعد از استفاده از کوئری توسط لامبدا
متغییر db را نیو کنید
db=کلاس مورد نظر
مثال
db = new DataClasses1DataContext();
ببین مشکل حل میشود
نقل قول: Sort نشدن دیتاگریدویو بعد از استفاده از کوئری توسط لامبدا
نه . مشل حل نشد .
فکر کنم گیر کار اون لیست شدنه باشه که نمیدونم چه باس بکنم
نقل قول: Sort نشدن دیتاگریدویو بعد از استفاده از کوئری توسط لامبدا
سلام، بنده تا حالا از مرتب سازی دیتاگرید استفاده نکردم اما احتمالا باید ایونتی مربوط به کلیک روی ستون ها وجود داشته باشه که وقتی فایر شد، شما باید متناسب با ستون کلیک شده داده هارو بصورت دستی sort کنین
نقل قول: Sort نشدن دیتاگریدویو بعد از استفاده از کوئری توسط لامبدا
اگه امکان داره یه نمونه بزارید .
یا دوستان دیگه اگه به این مشکل بر خوردن یه راه حل بدن که جواب داده باشه
این رو پیدا کردم ولی نمیدونم چطور ازش استفاده کنم و تویه کدوم رویداد بزارمش :
foreach(DataGridViewColumn column in dataGridView1.Columns)
{
column.SortMode = DataGridViewColumnSortMode.Automatic;
}
نقل قول: Sort نشدن دیتاگریدویو بعد از استفاده از کوئری توسط لامبدا
با سلام
روی مثلت گوشه datagridview کلیک کنید و در صفحه ظاهر شده روی تمام فیلد ها خاصیت SortMode رو روی Automatic قرار بدید
موفق باشید
نقل قول: Sort نشدن دیتاگریدویو بعد از استفاده از کوئری توسط لامبدا
نقل قول:
نوشته شده توسط
danialafshari
با سلام
روی مثلت گوشه datagridview کلیک کنید و در صفحه ظاهر شده روی تمام فیلد ها خاصیت SortMode رو روی Automatic قرار بدید
موفق باشید
تمام فیلدها Automatic هست ولی بازم Sort نمیشه
نقل قول: Sort نشدن datagridview بعد از استفاده از کوئری توسط لامبدا
https://referencesource.microsoft.co...BindingList.cs
لینک بالا یک کلاس هست. کافیه به پروژه اضافه و به صورت زیر استفاده کنید.
var allPerson = db.PersonRepository.GetAllPerson();
SortableBindingList<TblPerson> list = new SortableBindingList<TblPerson>(allPerson);
dataGridView1.DataSource = list;
نقل قول: Sort نشدن datagridview بعد از استفاده از کوئری توسط لامبدا
با سلام
کتابخانه System.Linq.Dynamic رو از طریق Nuget به پروژت اضافه کن سپس در رویداد dataGridView1_ColumnHeaderMouseClick کد زیر رو بنویس
private void dataGridView1_ColumnHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{
dataGridView1.DataSource = db.Persons.OrderBy(dataGridView1.Columns[e.ColumnIndex].DataPropertyName).ToList();
}
اینم برای F5 :
private void dataGridView1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode==Keys.F5)
dataGridView1.DataSource = db.Persons.OrderBy(dataGridView1.Columns[dataGridView1.CurrentCell.ColumnIndex].DataPropertyName).ToList();
}
موفق باشید
نقل قول: Sort نشدن datagridview بعد از استفاده از کوئری توسط لامبدا
نقل قول:
نوشته شده توسط
danialafshari
با سلام
کتابخانه System.Linq.Dynamic رو از طریق Nuget به پروژت اضافه کن سپس در رویداد dataGridView1_ColumnHeaderMouseClick کد زیر رو بنویس
private void dataGridView1_ColumnHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{
dataGridView1.DataSource = db.Persons.OrderBy(dataGridView1.Columns[e.ColumnIndex].DataPropertyName).ToList();
}
اینم برای F5 :
private void dataGridView1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode==Keys.F5)
dataGridView1.DataSource = db.Persons.OrderBy(dataGridView1.Columns[dataGridView1.CurrentCell.ColumnIndex].DataPropertyName).ToList();
}
موفق باشید
ممنون جواب داد .
فقط اینکه یکبار جواب میده و فقط ASC سورت میکنه.
چه بکنم که با هربار کلیک یکبار ASC سورت کنه و یکبار Desc ؟
1 ضمیمه
نقل قول: Sort نشدن datagridview بعد از استفاده از کوئری توسط لامبدا
کلاس ضمیمه شده رو به پروژتون اضافه کنید
توسط کد زیر ازش استفاده کنید
private bool sortAscending = true;
private void dataGridView1_ColumnHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{
if (sortAscending)
dataGridView1.DataSource = db.Persons.OrderByDynamic(dataGridView1.Columns[e.ColumnIndex].DataPropertyName, QueryableExtensions.Order.Asc).ToList();
else
dataGridView1.DataSource = db.Persons.OrderByDynamic(dataGridView1.Columns[e.ColumnIndex].DataPropertyName, QueryableExtensions.Order.Desc).ToList();
sortAscending = !sortAscending;
}
موفق باشید
نقل قول: Sort نشدن datagridview بعد از استفاده از کوئری توسط لامبدا
بابا بجای همه اینا برید دنبال لینک چون انتی تی خیلی مشکلات دیگه هم داره