PDA

View Full Version : سوال: نمایش اطلاعات داخل textbox توسط انتخاب checkbox در datagrid



seied javad
دوشنبه 16 تیر 1393, 22:44 عصر
سلام خسته نباشید.
من قبلا برای این سوال یک تاپیک درست کردم و به نتیجه رسیدم اما حالا یک مشکل پیدا کردم.
آدرس تاپیک:
http://barnamenevis.org/showthread.php?452021-%D8%AD%D8%B0%D9%81-%D8%A7%D8%B7%D9%84%D8%A7%D8%B9%D8%A7%D8%AA-%D8%A7%D8%B2-%D8%A8%D8%A7%D9%86%DA%A9-%D8%AA%D9%88%D8%B3%D8%B7-%DA%86%DA%A9-%D8%A8%D8%A7%DA%A9%D8%B3-%D8%AF%DB%8C%D8%AA%D8%A7-%DA%AF%D8%B1%DB%8C%D8%AF-%D9%88%DB%8C%D9%88

من میخواستم وقتی یک ردیف از دیتا گرید ویو چک خورد اطلاعات را داخل تکس باکس ها نمایش بده و قطعه کد این بود:
int ID = int.Parse(dataGridView1.CurrentRow.Cells[1].Value.ToString());
foreach (DataGridViewRow row in dataGridView1.Rows)
{
if (Convert.ToBoolean(row.Cells["chkcol"].Value) == true)
{
textBox10.Text = "";


}
else
{
textBox10.Text = dataGridView1.CurrentRow.Cells[1].Value.ToString();
textBox11.Text = dataGridView1.CurrentRow.Cells[2].Value.ToString();
textBox12.Text = dataGridView1.CurrentRow.Cells[3].Value.ToString();
textBox13.Text = dataGridView1.CurrentRow.Cells[4].Value.ToString();
textBox14.Text = dataGridView1.CurrentRow.Cells[5].Value.ToString();
textBox15.Text = dataGridView1.CurrentRow.Cells[6].Value.ToString();
textBox16.Text = dataGridView1.CurrentRow.Cells[7].Value.ToString();
textBox17.Text = dataGridView1.CurrentRow.Cells[8].Value.ToString();
textBox18.Text = dataGridView1.CurrentRow.Cells[9].Value.ToString();

}

این قطعه کد کار میکنه و کاملا صحیح ست ولی الان به یک مشکل خوردم که فکر کنم برای اینه که فیلد های بانکم زیاده و میگه نمیشه با int 32 پشتیبانی کرد
من error را برات میفرستم امیدوارم که بتونیید راهنماییم کنی چون خیلی بهش نیاز دارم .
ممنون.
http://www.xum.ir/images/2014/07/07/Error.jpg

abbas.oveissi
سه شنبه 17 تیر 1393, 03:08 صبح
دوست عزیز خطایی که شما عکسشو گذاشتید ،به طور صریح ذکر کرده که سلول اول CurrentRow مقدارش از محدوده ی یک عدد Int خارج هست.حالا موس رو ببر ببین dataGridView1.CurrentRow.Cells[1].Value تا بهت نشون بده و ببینی چه عددی بوده که این Error رو ایجاد کرده.

seied javad
سه شنبه 17 تیر 1393, 13:51 عصر
دوست عزیز خطایی که شما عکسشو گذاشتید ،به طور صریح ذکر کرده که سلول اول CurrentRow مقدارش از محدوده ی یک عدد Int خارج هست.حالا موس رو ببر ببین dataGridView1.CurrentRow.Cells[1].Value تا بهت نشون بده و ببینی چه عددی بوده که این Error رو ایجاد کرده.

سلام
سلول اول دیتا گرید ویو یا همون اولین فیلد بانکم شماره دانشجویی ست.
که من نوعشو big int گرفتم که اگر مقدارشو یک عددی مثل 99 یا یک عدد دویا سه یا چهار رقمی وارد کنم برنامه مشکلی نداره.
ولی وقتی عددی مثل 9113521048 شماره دانشجویی وارد کنم این Error را میده به نظرم باید همون خط اول را تبدیل به int64 کنم ولی نمیدونم چه طوری؟

erfan_urchin
سه شنبه 17 تیر 1393, 14:59 عصر
سلام
سلول اول دیتا گرید ویو یا همون اولین فیلد بانکم شماره دانشجویی ست.
که من نوعشو big int گرفتم که اگر مقدارشو یک عددی مثل 99 یا یک عدد دویا سه یا چهار رقمی وارد کنم برنامه مشکلی نداره.
ولی وقتی عددی مثل 9113521048 شماره دانشجویی وارد کنم این Error را میده به نظرم باید همون خط اول را تبدیل به int64 کنم ولی نمیدونم چه طوری؟
شما باید از متغیر Big Integer استفاده کنید
برای این کار سمت راست پروژه تو پنجره Solution Explorer روی Reference راست کلیک کرده و گزینه Add Reference رو بزنید. سمت چپ پنجره باز شده Assemblies رو انتخاب و شاخه Framework رو انتخاب کنید
از لیست باز شده تیک System.Numerics رو بزنید و OK کنید
تو پروژه نیم اسپیس زیر رو اضافه کنید
using System.Numerics;
دیگه کار تموم شد و شما میتونی خیلی راحت از BigInteger استفاده کنید مثل کد زیر
private void button1_Click(object sender, EventArgs e)
{
BigInteger b =new BigInteger(Convert.ToDouble(textBox1.Text));
MessageBox.Show(b.ToString());
}

خوبی BigInteger اینه که اگه کد رو به شکل بالا بنویسین (یعنی به عنوان یک class ازش یک شی تعریف کنید) میتونه اعداد خیلی بزرگ حتی تا 300 رقم رو ساپورت کنه
موفق باشی

seied javad
سه شنبه 17 تیر 1393, 15:35 عصر
شما باید از متغیر Big Integer استفاده کنید
برای این کار سمت راست پروژه تو پنجره Solution Explorer روی Reference راست کلیک کرده و گزینه Add Reference رو بزنید. سمت چپ پنجره باز شده Assemblies رو انتخاب و شاخه Framework رو انتخاب کنید
از لیست باز شده تیک System.Numerics رو بزنید و OK کنید
تو پروژه نیم اسپیس زیر رو اضافه کنید
using System.Numerics;
دیگه کار تموم شد و شما میتونی خیلی راحت از BigInteger استفاده کنید مثل کد زیر
private void button1_Click(object sender, EventArgs e)
{
BigInteger b =new BigInteger(Convert.ToDouble(textBox1.Text));
MessageBox.Show(b.ToString());
}
موفق باشی

ببین آدرس را درست رفتم:
120904

اگر درست رفتم این زیر شاخه و ... را نداشت؟

erfan_urchin
سه شنبه 17 تیر 1393, 15:37 عصر
آها برای شما 2010 هستش من برای 2012 رو گفتم
بله تا اینجا درست رفتی. الان تو این لیستی که رفتی دنبال System.Numerics بگرد و انتخابش کن و OK کن

seied javad
چهارشنبه 18 تیر 1393, 15:28 عصر
آها برای شما 2010 هستش من برای 2012 رو گفتم
بله تا اینجا درست رفتی. الان تو این لیستی که رفتی دنبال System.Numerics بگرد و انتخابش کن و OK کن

سلام عزیز من هم چنان مشکلم حل نشده توی اون لیستی که گفتی گشتم ولی system.Numerics نداشت.

فقط یک سوال این system .numerics چه کاربردی داره؟
به نظرت همون خط اول نمیتونم مقدار int را ازنوع int64 بگیرم؟
int ID = int.Parse(dataGridView1.CurrentRow.Cells[1].Value.ToString());

erfan_urchin
چهارشنبه 18 تیر 1393, 15:46 عصر
چرا از Int64 هم میشه استفاده کنی اما فرقشون اینه که Int64 فقط 19 رقم میگیره اما BigInteger بیشتر از 300 رقم رو ساپورت میکنه
اما فکر کنم Int64 کار شما رو فعلا راه بندازه

Int64 ID = Convert.ToInt64(
dataGridView1.CurrentRow.Cells[1].Value);

موفق باشی

seied javad
جمعه 20 تیر 1393, 19:45 عصر
چرا از Int64 هم میشه استفاده کنی اما فرقشون اینه که Int64 فقط 19 رقم میگیره اما BigInteger بیشتر از 300 رقم رو ساپورت میکنه
اما فکر کنم Int64 کار شما رو فعلا راه بندازه

Int64 ID = Convert.ToInt64(
dataGridView1.CurrentRow.Cells[1].Value);


موفق باشی

ممنون تشکر
دقیقا همین قطعه کده
ممنون
خیلی کمکم کردی
تشکر
خدا خیرت بده
تا همین جا بسه
فقط اگر درمورد همین BigInteger یا system.Numerics که گفتی یک توضیحی بدی ممنون میشم میخوام اطلاعات عمومیم بیشتر بشه
چه طوری باید به برنامه اضافه کنم چون توی اون لیستی که گفتی گشتم نبود.