안녕하세요, 저는 프레임 워크 4.0으로 업그레이드하고 데이터베이스에 관계 외래 키를 추가했습니다. 2 테이블 User and Staff
에 가입하고 UI로 돌아가고 싶습니다. 직원 표에는 UserId가 있습니다. 즉, 사용자 이름을 datagridview에서 클릭 할 때마다 모든 텍스트 상자에 사용자 및 직원 데이터를 표시하고 싶습니다.튜플을 사용하여 linq 반환
나는
public IEnumerable<Tuple<User, Staff>> Get()
{
using (qDataContext db = new qDataContext())
{
try
{
var r = from u in db.Users
join s in db.Staffs on u.Id equals s.UserId
select new Tuple<User, Staff>(u, s);
return r;
}
catch (Exception ex)
{
throw;
}
}
}
그러나 UI의 튜플
은, 내가해야 할 방법이 바인딩을 사용합니까?gvUser.DataSource = user.Get();
참고로, gridview는 사용자 이름을 표시합니다. 직원 테이블 암호, datejoined 필드를 저장합니다 ..
그건 그렇고, 내가 이미 테이블에 외래 키 참조를 추가 한 이후로해야합니까 .. 나는 그것이 나를 돌아올만큼 똑똑해야한다고 생각하고 있습니다 User.Staff.Password
편집
이 난 내 데이터베이스에 .. 내가 추가 한 관계 외래 키를 찾을 것입니다. 아래의 코드는 이미 Staff.UserId으로 나에게 사용자 및 직원 데이터를 반환 할 수는 사용자 아이디 And i don have to use the TUPLE to return those object :)!!
public IEnumerable<User> Get()
{
using (ZebraDataContext db = new ZebraDataContext())
{
try
{
var r = from u in db.Users
select u;
//join s in db.Staffs on u.Id equals s.UserId
//select new Tuple<User, Staff>(u, s);
return r.ToList();
}
catch (Exception ex)
{
throw;
}
}
}
내가 GUI의 DataGridView에 바인딩 때, 내가 문제가 지적된다.
private void InitializeData()
{
gvUser.DataSource = user.Get();
}
이 코드는 사용자 데이터를 보여줍니다. 하지만 gvUser_RowEnter
을 수행하면 직원 데이터가 어떻게 되나요?
개인 무효 gvUser_RowEnter (객체 송신자 DataGridViewCellEventArgs E) { (e.RowIndex < = 0)에 복귀하는 경우;
foreach (DataGridViewRow row in gvUser.SelectedRows)
{
User user = row.DataBoundItem as User;
txtName.Text = user.Name;
txtAddress.Text = user.Address;
txtPhone.Text = user.Phone;
txtPhone2.Text = user.Phone2;
txtRemark.Text = user.Remarks;
txtPassword.Text = user.Staffs.First().Password;
}
}
txtPassword.text = user.Staffs.First().Password
< ==는 삭제 된 개체에 액세스 할 수 없습니다이 오류 실패했습니다. 개체 이름 : 'Dispose.'후 액세스 한 DataContext.
내가 User에 Staff 객체를 추가 할 때. 나는 ((User) (row.DataBoundItem))의 데이터를 볼 수 있습니다. Staffs.entities.Items 직원 데이터가 있습니다 ..
답장을 보내 주셔서 감사합니다.하지만 제 3 자 libarry를 사용하지 않는 것이 좋습니다. – VeecoTech