PDA

View Full Version : مشکل در قرار دادن کمبوباکس و دیتا گرید



mortaza_max
دوشنبه 18 اسفند 1399, 23:39 عصر
سلام. دوستان من یه فرم دارم که توش یه گرید ویو از لیست پرسنل دارم که از دیتا بیس با دستورات لینک فراخوانی میکنم
و یه لیستی ساختم که فقط نام و آیدی و شغل رو از جدول میگیره
و این رو ریختم تو یه کمبو باکس تو همین فرم تا طبق اون دیتا گرید رو فیلتر کنم
منتها مشکل اینجاست که کمبو اطلاعاتش پر میشه ولی گرید ویو پر نمیشه. بعد میام کدهای مربوط به کمبو رو حذف میکنم اونوق دیتا گرید ویو کار میکنه و اطلاعاتش پر میشه. با هم یه جا کار نمیکنن. فک کنم بخاطر این باشه که تو لود فرم دوبار به بانک لینک میزنه. چطوری حلش کنم. اینم کدهاش
کد مربوط به ساختن لیست


public class ListOfPezeshkViewModel
{
public int MediaclID { get; set; }
public string Name { get; set; }
public string typejob { get; set; }

}

کد مربوط به ارتباط با جدول:

public List<ListOfPezeshkViewModel> ListPezeshk(Expression<Func<Medical, bool>> Where = null) // لیست پزشکان
{
if(Where != null)
{
return db.Medical.Where(Where).Select(p => new ListOfPezeshkViewModel
{
MediaclID = p.MedicalID,
Name = p.FullName,
typejob = p.TypeJob
}).ToList();
}
else
{
return db.Medical.Select(p => new ListOfPezeshkViewModel
{
MediaclID = p.MedicalID,
Name = p.FullName,
typejob = p.TypeJob
}).ToList();
}
}

کد فرم :

private void frmRezervTime_Load(object sender, EventArgs e)
{
BindGrid();
using (UnitOfWork db = new UnitOfWork())
{
List<ListOfPezeshkViewModel> list = new List<ListOfPezeshkViewModel>();
ListOfPezeshkViewModel pe = new ListOfPezeshkViewModel()
{
MediaclID = 0,
Name = "-- انتخاب پزشک --"
};
list.Add(pe);
list.AddRange(db.Repository.ListPezeshk().Where(p => p.typejob == "پزشک"));
cmbMediacal.DataSource = list;
cmbMediacal.DisplayMember = "Name";
cmbMediacal.ValueMember = "MediaclID";
cmbMediacal.SelectedIndex = 0;
}

}
void BindGrid()
{
using (UnitOfWork db = new UnitOfWork())
{
var rt = db.RezervTimeRepository.Get().Where(p=> p.DateRezerv > DateTime.Now);
if (cntrlSearch == 1)
rt = db.RezervTimeRepository.Get().Where(p => p.MedicalID == cmbMediacal.SelectedIndex);
if (cntrlSearch == 2)
{
if (txtStart.Value != null && txtEnd.Value != null)
rt = db.RezervTimeRepository.Get().Where(p => p.DateRezerv >= txtStart.Value && p.DateRezerv <= txtEnd.Value);
if (txtStart.Value == null && txtEnd.Value != null)
rt = db.RezervTimeRepository.Get().Where(p => p.DateRezerv <= txtEnd.Value);
if (txtStart.Value != null && txtEnd.Value == null)
rt = db.RezervTimeRepository.Get().Where(p => p.DateRezerv >= txtStart.Value);
if (txtStart.Value == null && txtEnd.Value == null)
rt = db.RezervTimeRepository.Get().Where(p => p.DateRezerv > DateTime.Now);
}
dgList.Rows.Clear();
int Count = 1;
foreach (var i in rt)
{
string pezeshkName = db.Repository.MediaclNameById(i.MedicalID.Value);
int Specialid = db.Repository.SpesialIDbyMedicalId(i.MedicalID.Val ue);
string specialType = db.Repository.SpicialTypeByID(Specialid);
int Countrezerv = db.RezervRepository.Get().Where(p => p.RezervTimeID == i.RezervTimeID).Count();
dgList.Rows.Add(i.RezervTimeID, Count++, pezeshkName, specialType, i.CountRezerv, i.DateRezerv.Value.ToShamsi(), i.StrartTime, i.EndTime, Countrezerv, i.MedicalID, Specialid, i.DateRezerv);
}
}
}


دوستان منتظر راهنماییاتون هستم.