ورود

View Full Version : مشکل در پیدا کردن مقدار یک Cell خاص در DataGrid



مهدی فرزاد
جمعه 28 خرداد 1389, 13:13 عصر
سلام
من در کار با DataGrid در WPF به یه مشکل بر خوردم
من میخوام به عنوان مثال اطلاعات Cell دوم از یک سطر انتخاب شده رو در یک TextBox نمایش بدم اما کدهایی رو که در WInApp داشتیم اینجا نداریم لطفا راهنمایی کنید.

مهدی فرزاد
جمعه 28 خرداد 1389, 13:41 عصر
خودم جواب رو پیدا کردم و چون فکر میکنم ممکنه این سئوال خیلی از دوستان دیگه هم باشه راهش رو مینویسم

اول اینکه من از روش LINQ to SQL ارتباط DataGrid رو با بانک اطلاعاتیم بر قرار کردم
توی بانکم یه جدول به نام Personal دارم که فیلدهای PersonalID و PersinalFierName و PersinalLastName رو داره
و من سه TextBox هم روی فرمم به همین نام ها دارم
حالا توی رویداد SelectionChanged دیتا گیرید مینویسم


private void dataGrid1_SelectionChanged(object sender, SelectionChangedEventArgs e)
{

Personal P = this.dataGrid1.CurrentItem as Personal;
this.txtFirstNameEdit.Text = P.FirstName;
this.txtlastNameEdit.Text = P.LastName;
this.txtPersonalIDEdit.Text = P.PersonalID.ToString();
}

Shahab_H
جمعه 09 مهر 1389, 19:41 عصر
منم یه کار مشابه کار شما رو انجام دادم ولی یه مشکل دارم اونم اینه که دیتا گرید حاصل full outer join دو جدول person و user ئه! الان نمی دونم
datagird.currentitem رو تو چی باید بریزم چون نه به تنهایی person ئه نه به تنهایی user!

tk2005730
شنبه 10 مهر 1389, 08:07 صبح
private void PrintCellValues(DataGrid myGrid){
int iRow;
int iCol;
DataTable myTable;
// Assumes the DataGrid is bound to a DataTable.
myTable = (DataTable) dataGrid1.DataSource;
for(iRow = 0;iRow < myTable.Rows.Count ;iRow++) {
for(iCol = 0;iCol < myTable.Columns.Count ;iCol++) {
Console.WriteLine(myGrid[iRow, iCol]);
}
}
}

Shahab_H
شنبه 10 مهر 1389, 19:49 عصر
private void PrintCellValues(DataGrid myGrid){
int iRow;
int iCol;
DataTable myTable;
// Assumes the DataGrid is bound to a DataTable.
myTable = (DataTable) dataGrid1.DataSource;
for(iRow = 0;iRow < myTable.Rows.Count ;iRow++) {
for(iCol = 0;iCol < myTable.Columns.Count ;iCol++) {
Console.WriteLine(myGrid[iRow, iCol]);
}
}
}


کد شما کار نمی کنه چون دیتا گرید اندیس مستقیم قبول نمی کنه:چشمک:

fateme65
چهارشنبه 13 مهر 1390, 18:58 عصر
من هر چی این کدی که شمانوشتیدو میزنم ارور میده!تنظیمات دیگه ای نداره؟

fateme65
چهارشنبه 13 مهر 1390, 19:02 عصر
خودم جواب رو پیدا کردم و چون فکر میکنم ممکنه این سئوال خیلی از دوستان دیگه هم باشه راهش رو مینویسم

اول اینکه من از روش LINQ to SQL ارتباط DataGrid رو با بانک اطلاعاتیم بر قرار کردم
توی بانکم یه جدول به نام Personal دارم که فیلدهای PersonalID و PersinalFierName و PersinalLastName رو داره
و من سه TextBox هم روی فرمم به همین نام ها دارم
حالا توی رویداد SelectionChanged دیتا گیرید مینویسم


private void dataGrid1_SelectionChanged(object sender, SelectionChangedEventArgs e)
{

Personal P = this.dataGrid1.CurrentItem as Personal;
this.txtFirstNameEdit.Text = P.FirstName;
this.txtlastNameEdit.Text = P.LastName;
this.txtPersonalIDEdit.Text = P.PersonalID.ToString();
}


من هر چی این کد شما رو می زنم ارورمیده. تنظیمات دیگه ای نداره؟
Object reference not set to an instance of an object

مهدی فرزاد
پنج شنبه 14 مهر 1390, 20:23 عصر
سلام

من این سئوال رو زمانی نوشتم که به WPF آشنایی زیادی نداشتم
راه حل این کار استفاده از Binding هست و نیازی به این کار ها هم نیست
شما کافیه در همون اونت DataContext ، dataGrid1_SelectionChanged تکس باکس مورد نظر رو برابر this.dataGrid1.SelectedItem قرار بدید و توی کد Xaml تکس باکس بنویسید
Text = "{Binding FILDNAME}"

بابت این جواب قدیمی پوزش میخوام

Program.net
جمعه 22 مهر 1390, 09:52 صبح
منم یه کار مشابه کار شما رو انجام دادم ولی یه مشکل دارم اونم اینه که دیتا گرید حاصل full outer join دو جدول person و user ئه! الان نمی دونم
datagird.currentitem رو تو چی باید بریزم چون نه به تنهایی person ئه نه به تنهایی user!



منم این مشکل رو دارم و از join جدول هام یک view ساختم ولی دوست دارم بدونم راه حل بهتری هست ؟ که حتما باید باشه .....

Boy_nn
یک شنبه 07 خرداد 1391, 22:34 عصر
سلام

من این سئوال رو زمانی نوشتم که به WPF آشنایی زیادی نداشتم
راه حل این کار استفاده از Binding هست و نیازی به این کار ها هم نیست
شما کافیه در همون اونت DataContext ، dataGrid1_SelectionChanged تکس باکس مورد نظر رو برابر this.dataGrid1.SelectedItem قرار بدید و توی کد Xaml تکس باکس بنویسید
Text = "{Binding FILDNAME}"

بابت این جواب قدیمی پوزش میخوام

فقط یه سوال وقتی این کد رو می نویسم فقط دفعه اول این کد کار می کنه
و وقتی که برای بار دوم روی دیتا گرید کلیک می کنم دیگه عمل نمی کنه