با سلام
من در پرکردن گرید از Linq و EF استفاده می کنم ولی هنگامی که می خواهم روی هر کدام از ردیف های گرید کار کنم دچار مشکل می شوم ، کدهای برنامه در زیر است
private void RefreshData()
{
DataContext.Context.Refresh(RefreshMode.StoreWins, DataContext.Context.Persons);
grdPersons.DataSource = (from p in DataContext.Context.Persons
join pt in DataContext.Context.PersonType on p.PersonTypeID equals pt.PersonTypeID
select new
{
p.fName,
p.lName,
p.pName,
p.ShenasnameID,
p.Phone,
p.Mobile
} ).ToList();
}
private void btnEdit_Click(object sender, EventArgs e)
{
if(grdPersons.SelectedRows.Count !=0)
{
//در خط زیر اشکال دارم
Persons objPerson = (Persons)grdPersons.CurrentRow.DataBoundItem;
ShowEdit(objPerson, false);
}
}
private void ShowEdit(Persons objPerson,bool addingPerson)
{
EditPersonForm objEditPersonFrom = new EditPersonForm();
objEditPersonFrom.personsBindingSource.DataSource = objPerson;
if (!addingPerson)
{
objEditPersonFrom.PersonID1 = objPerson.PersonID;
objEditPersonFrom.imgPerson.ImageLocation = objPerson.Picture;
}
if (objEditPersonFrom.ShowDialog() == DialogResult.OK)
{
objPerson.Jensiat = objEditPersonFrom.cmbJens.Items[objEditPersonFrom.cmbJens.SelectedIndex].ToString();
objPerson.Picture = objEditPersonFrom.imgPerson.ImageLocation;
objEditPersonFrom.personsBindingSource.EndEdit();
if(addingPerson)
DataContext.Context.Persons.AddObject(objPerson);
try
{
DataContext.Context.SaveChanges();
}
catch{}
}
else
{
objEditPersonFrom.personsBindingSource.CancelEdit( );
}
RefreshData();
}