PDA

View Full Version : سوال: دسترسی به مقدار یک فیلد در datagridview



kebriya
سه شنبه 26 آبان 1394, 16:39 عصر
سلام دوستان من ی دیتاتیبل دارم که از جدولی پرش کردم.که خروجیش همیشه یک ردیف با دو ستونه.حالا میخام این دو ستون هرکدومو به یک سلول مورد نظرم تو دیتاگرید نسبت بدم.اما ارور زیر رو بخاطر صحیح ننوشتن ریختن اطلاعات تو دیتاگرید میده:
Object reference not set to an instance of an object.
اینم کد من:

DataTable dt = new DataTable();
Mydb.Open();
string str = " select Tre_id,Tre_name from Treat where Tre_Id=" + TreatId;
new SqlDataAdapter(str, Mydb.conn).Fill(dt);
DgvInfo.CurrentRow.Cells["Tre_id"].Value = dt.Rows[0]["Tre_id"].ToString();
DgvInfo.CurrentRow.Cells["Tre_name"].Value = dt.Rows[0]["Tre_name"].ToString();
Mydb.Close();

kebriya
سه شنبه 26 آبان 1394, 19:08 عصر
خواهش میکنم کمکم کنید.خیلی ضروریه.

aslan
چهارشنبه 27 آبان 1394, 00:28 صبح
سلام
بجای CurrentRow
از


Rows[0]

استفاده کنید . بشرطی که قبلا ستونهای لازم را در دیتاگرید ایجاد کرده باشین

AmiN0012
چهارشنبه 27 آبان 1394, 08:50 صبح
سلام .گرید من سطر و ستون داره از جدول بانک میگیره.
اینجوری منظورته:
DgvInfo.Rows[DgvInfo.Rows[0].Index].Cells[8].Value = dt.Rows[0]["Tre_name"].ToString();
ارور زیر روم میده:
Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index
میخام سطری که انتخاب شده هست یا به معنی دیگه highlight شده تغییر پیدا کنه.

aslan
چهارشنبه 27 آبان 1394, 09:45 صبح
کد زیر منظورم بود :


DgvInfo.Rows[0].Cells["Tre_id"].Value = dt.Rows[0]["Tre_id"].ToString();

ولی اگه قراره روی Row کلیک شده ( CurrentRow) قرار بگیره موضوع فرق میکنه

AmiN0012
چهارشنبه 27 آبان 1394, 09:51 صبح
بازم همین ارور رو میده.من میخام رویه همین سطر کنونی اعمال شه تغییرات.اما انگار نمیشه تو ستونش چیزی ریخت.

aslan
چهارشنبه 27 آبان 1394, 10:06 صبح
تو کدوم event میخواین اینکارو بکنین ؟؟
میشه کدهای این قسمت را کاملتر اینجا قرار بدین ؟

AmiN0012
چهارشنبه 27 آبان 1394, 10:14 صبح
دوست عزیز کد شما درسته.ولی من میخام از ی فرم دیگه تابع ی فرم دیگرو فراخونی کنم بد معرفی کردم.تریس میکنم وارد تابع فرم میشم اما حق ندارم رو هیچ کدوم از تکست باکساش یا ستون هایه گریدش تغییر ایجاد کنم.
من اومدم تو فرم دومم که میخاستم تابعی از فرم اولمو صدا کنم.یه نمونه از فرم اول بالایه بالا ساختم بعد صداش زدم.راه حلی برای صدا زدن یک تابع از تابع دیگه نداری؟

AmiN0012
چهارشنبه 27 آبان 1394, 10:31 صبح
ببینید این تابع منه که تو فرم اوله و من میخام وقتی فرم 2 کارش تموم شد در حال بسته شدنش (form closing)این تابع از فرم اول فراخوانی شه:
public void s(Int64 TreatId) public void s(Int64 TreatId) {
DataTable dt = new DataTable();
Mydb.Open();
string str = " select Tre_TotalDaryafti,Tre_Remaining from Treat where Tre_Id=" + TreatId;
new SqlDataAdapter(str, Mydb.conn).Fill(dt);
DgvInfo.Rows[0].Cells[5].Value = dt.Rows[0]["Tre_TotalDaryafti"].ToString();
DgvInfo.Rows[0].Cells[6].Value = dt.Rows[0]["Tre_Remaining"].ToString();
Mydb.Close();
}
برای صدا زدنش تو فرم دوم ی نمونه ازش ساختم زیر public partial class.بدین شکل:
Frm_Treat Frm = new Frm_Treat();
حالا اومدم تو form closing کد زیرو نوشتم برای تابع s
Frm.s(TreatID);