PDA

View Full Version : با انتخاب یک سطر فیلدها در TextBoxها نمایش داده شود



mahaya67
سه شنبه 04 اسفند 1394, 11:18 صبح
دوستان من میخوام زمانی که یک سطر در گرید ویو انتخاب میشه مقادیر اون سطر توی تکست باکس ها نشون داده بشه، من این کد رو توی رویداد selection change گرید ویو نوشتم

comboBox1.Text = dataGridView1.CurrentRow.Cells[13].Value.ToString();
txtBornCity.Text = dataGridView1.CurrentRow.Cells[16].Value.ToString();
richTextBox1.Text = dataGridView1.CurrentRow.Cells[18].Value.ToString();
ولی دو تا مشکل وجود داره یکی اینکه الان این کده واسه بقیه مقادیر درسته بجز واسه این سه تا که ارور unhandled exeption ... میده .علتش چیه!!!
و مشکل دوم اینکه همون موقع که برنامه اجرا میشه به طور پیشفرض اولین سطر گرید ویو انتخاب هست پس همیشه اول محتویات این سطر اول رو نشون میده در صورنی که من میخوام زمانی که کاربر یک سطر رو انتخاب کرد این اتفاق بیفته،باید چکار کنم؟ توی چه رویدادی باید بنویسم؟؟؟

AmiN0012
چهارشنبه 05 اسفند 1394, 02:32 صبح
برای سوال دومت.باید تو رویداد currentcellchanged دیتاگرید بنویس.
سعی کن برا سوال اول مقادیر سلول هارو از دیتاتیبل بگیری نه دیتا گرید.
یه breakpoint بزار ببین چی توشون ذخیره میشه.

m. hamide7
چهارشنبه 05 اسفند 1394, 04:03 صبح
میتونی توی رویداد dataGridView1_CellClick بنویسی
وبرای دسترسی به مقدار سطر انتخاب شده اینجوری بنویسی


txtuser.Text = dataGridView1.Rows[e.RowIndex].Cells[1].Value.ToString();

mahaya67
شنبه 08 اسفند 1394, 02:00 صبح
میتونی توی رویداد dataGridView1_CellClick بنویسی
وبرای دسترسی به مقدار سطر انتخاب شده اینجوری بنویسی


txtuser.Text = dataGridView1.Rows[e.RowIndex].Cells[1].Value.ToString();


چه به این صورت چه اونطور که خودم نوشته بودم وقتی سطری رو انتخاب میکنم یه ی فیلدش خالیه این ارور رومیده : (برای همه فیلدها نه فقط برای همون چنتا فیلدی که اونموقع هم بهشون گیر میداد)
null refrence exeption was un handled:
Object reference not set to an instance of an object.

حسین.کاظمی
شنبه 08 اسفند 1394, 14:44 عصر
دوست عزیز یبار با دقت کامل کدهاتو چک کن ببین احتمالا یجا اشتباه کردید.....
البته ببخشید قصد جسارت نداشتم قصدم راهنمایی بود

mahaya67
یک شنبه 09 اسفند 1394, 05:32 صبح
دوست عزیز یبار با دقت کامل کدهاتو چک کن ببین احتمالا یجا اشتباه کردید.....
البته ببخشید قصد جسارت نداشتم قصدم راهنمایی بود

ممنون. کدها درسته ولی واسه رکوردهایی که فیلد خالی داره پیغام میده که exeption براش تعریف نشده. فک کنم کدها رو باید توی try catch بذارم. میشه راهنماییم کنید که توی catch واسه این کد باید چی بنویسم؟؟؟؟

rezashaban
دوشنبه 10 اسفند 1394, 02:26 صبح
ممنون. کدها درسته ولی واسه رکوردهایی که فیلد خالی داره پیغام میده که exeption براش تعریف نشده. فک کنم کدها رو باید توی try catch بذارم. میشه راهنماییم کنید که توی catch واسه این کد باید چی بنویسم؟؟؟؟

سلام
آره درسته برخی ستونها که مقدار نداره و میخوای مقدارش رو به استرینگ تبدیل کنی خطا میده؛ استفاده از try هم منطقی نیست چون ممکنه ستون اولی که داری میخونی خالی باشه و وارد catch بشه و بقیه ستون ها رو نمخونه و باید null بودن هر ستون رو موقع خوندن چک کنی که راه حل منطقی تری هست

AmiN0012
دوشنبه 10 اسفند 1394, 02:35 صبح
دوست عزیز ربطی به try catch نداره.شما میخاهید اطلاعاتو تو تکست باکس بریزید.متن ارور رو کامل ذکر کنید در اینجا تا بررسی شه

vB.N3T
دوشنبه 10 اسفند 1394, 08:38 صبح
در مرحله اول شما نباید اجازه بدی فیلدی در بانک بدون مقدار بمونه(در صورت وارد نکردن مقداری یه مقدار پیش فرض قرار بده.منطقی ترش اینه که در اون فرمی که اطلاعات وارد میشه با یک errorProvider ورودی ها رو چک کنید که خالی نباشن ) یا اگر موند موقع سکلت چک کن و اگر مقداری برنگردوند اون سلول رو برابر 0 قرار بده

var select_price_bargh = from a in db.tbl_ghobozs
where a.date.Substring(0, 4) == year
select new { a.price };
if (select_price_bargh.Count() != 0)
{
dataGridView1.CurrentRow.Cells[3].Value = select_price_bargh.Sum(c => (Convert.ToInt32(c.price)));
}
else
{
dataGridView1.CurrentRow.Cells[3].Value = "0";
}

mahaya67
دوشنبه 10 اسفند 1394, 16:06 عصر
در مرحله اول شما نباید اجازه بدی فیلدی در بانک بدون مقدار بمونه(در صورت وارد نکردن مقداری یه مقدار پیش فرض قرار بده.منطقی ترش اینه که در اون فرمی که اطلاعات وارد میشه با یک errorProvider ورودی ها رو چک کنید که خالی نباشن ) یا اگر موند موقع سکلت چک کن و اگر مقداری برنگردوند اون سلول رو برابر 0 قرار بده

var select_price_bargh = from a in db.tbl_ghobozs
where a.date.Substring(0, 4) == year
select new { a.price };
if (select_price_bargh.Count() != 0)
{
dataGridView1.CurrentRow.Cells[3].Value = select_price_bargh.Sum(c => (Convert.ToInt32(c.price)));
}
else
{
dataGridView1.CurrentRow.Cells[3].Value = "0";
}

آخه اجباری توی گر کردن همه فیلدها نیست ک لازم باشه ارور بده یه شرط گذاشتم که اگر خالی نبود این کار رو انجام بده به این صورت :


var n = dataGridView1.CurrentRow.Cells[2].Value;
if (n !=null)
txtName.Text = dataGridView1.CurrentRow.Cells[2].Value.ToString();

فقط برای یکی از فیلدها من موقع ثبت مقدارشو از چندتا تکس باکس میگیرم، الان واسه نمایشش مثلا توی کد بالا به جای اون قسمتی ک underline کردم چی باید بنویسم؟!

mahaya67
چهارشنبه 12 اسفند 1394, 02:51 صبح
:ناراحت::ناراحت: هیچکی راهشو نمی دونه؟؟؟