یادگیری C# (بررسی سئوالات و مشکلات)

hkyan

عضو جدید
با سلام
میخوام با انتخاب هر گزینه از کمبوباکس اطلاعات اون در دیتاگرید ویو نشون داده بشه.کدش را نوشتم ولی خطا میده از دوستان کسانی که میدونند پاسخ بدهند.

کد:
 private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
[FONT=tahoma]             foreach (DataGridViewRow row in dataGridView1.Rows)
            {
                if (row.Cells[2].Value.ToString() == comboBox1.Text.ToString()) 
                {
                    DataGridViewCell cell = row.Cells[2];
                    dataGridView1.CurrentCell = cell;
                    dataGridView1.BeginEdit(true);
                    break;
                }
            }
[/FONT]

 
آخرین ویرایش توسط مدیر:

self.f_t_m990

کاربر فعال تالار اسلام و قرآن ,
کاربر ممتاز
سلام
نقش علامت مثبت(+) در نمایش خروجی دقیقا چیه؟چیکار میکنه؟؟
با تشکر
 
آخرین ویرایش:

nafis...

مدیر بازنشسته
MessageBox.Show("the value of intnumber:" + intnumber
, "strings");
خب الان این کدی که نوشتی این کار رو انجام میده
عبارت بین " " را به مقدار intnumber میچسبونه(یا اتصال میکنه) یه جوری کارش مثل + میمونه

مثلا در خروجی این چاپ میشه:
the value of intnumber: 14
 

tracer

کاربر حرفه ای
کاربر ممتاز
خب الان این کدی که نوشتی این کار رو انجام میده
عبارت بین " " را به مقدار intnumber میچسبونه(یا اتصال میکنه) یه جوری کارش مثل + میمونه

مثلا در خروجی این چاپ میشه:
the value of intnumber: 14

در این مثالی که دوستمون زدن با حذف + intnumber مشکلی در اجرای برنامه ایجاد نمی شود
ولی در ص 76 برنامه ای که طول رشته رو بر می گرداند
MessageBox.Show(strData.Length + " Character(s)",
"Strings");
با حذف + " Character(s
کل برنامه دچار خطا می شود و برنامه اجرا نمی گردد
چرا؟
 

nafis...

مدیر بازنشسته
در این مثالی که دوستمون زدن با حذف + intnumber مشکلی در اجرای برنامه ایجاد نمی شود
ولی در ص 76 برنامه ای که طول رشته رو بر می گرداند
MessageBox.Show(strData.Length + " Character(s)",
"Strings");
با حذف + " Character(s
کل برنامه دچار خطا می شود و برنامه اجرا نمی گردد
چرا؟
خب به این خاطر که دستور messagebox.show مقداری که میگیره باید از جنس رشته باشه
اگه کلا "char.. " رو حذف کنین فقط strdata.length میمونه، که این یک عدد برمیگردونه
پس باید strdata.length به رشته تبدیل بشه ----- با استفاده از این دستور (()MessageBox.Show(a.Length.ToString;
:gol:
 

yummy

عضو جدید
با سلام خدمت مهندسین عزیزم
من یه برنامه نویس آماتور هستم
به خدا هر چی تو نت گشتم نتونستم چیزی پیدا کنم
واسه همین مزاحم شدم
من یه برنامه کوچیک دارم که یک جدول بیشتر نداره
آخرین فیلد این جدول مربوطه میشه به یک عدد که در واقع یک بارکد هستش واسه یه کالا
من تا قسمت اضافه کردن اطلاعات فرمم رو نوشتم و اطلاعاتم درست ثبت میشه
حالا میخوام از بارکدم که فیلد آخری باشه یه گزارش بگیرم
در ضمن بارکد این عدد هم واسم چاپ بشه
راستی نکته مهم پایگاه داده من اکسس هستش
چطور می تونم ازش گزاش بگیرم
کریستال ریپورت رو نصب کردم
ولی ارتباطش با جدولم و چاپ بارکدم رو نمی دونم چطور انجام بدم
واقعا ممنون میشم کمکم کنید
ممنون
 

negin17h

مدیر تالارهای مهندسی کامپیوتر و رباتیکمتخصص #C
مدیر تالار
با سلام خدمت مهندسین عزیزم
من یه برنامه نویس آماتور هستم
به خدا هر چی تو نت گشتم نتونستم چیزی پیدا کنم
واسه همین مزاحم شدم
من یه برنامه کوچیک دارم که یک جدول بیشتر نداره
آخرین فیلد این جدول مربوطه میشه به یک عدد که در واقع یک بارکد هستش واسه یه کالا
من تا قسمت اضافه کردن اطلاعات فرمم رو نوشتم و اطلاعاتم درست ثبت میشه
حالا میخوام از بارکدم که فیلد آخری باشه یه گزارش بگیرم
در ضمن بارکد این عدد هم واسم چاپ بشه
راستی نکته مهم پایگاه داده من اکسس هستش
چطور می تونم ازش گزاش بگیرم
کریستال ریپورت رو نصب کردم
ولی ارتباطش با جدولم و چاپ بارکدم رو نمی دونم چطور انجام بدم
واقعا ممنون میشم کمکم کنید
ممنون

سلام
گزارش ساده كه مشكل نداره اما اگر بخواين باركد دقيقاً چاژ شه بايد مثلاً از ابزار گزارشگيري Devexpress استفاده كني كه خود باركد رو از روي كد شما ايجاد ميكنه. البته اگر درست فهميده باشم :gol:
 

yummy

عضو جدید
سلام
گزارش ساده كه مشكل نداره اما اگر بخواين باركد دقيقاً چاژ شه بايد مثلاً از ابزار گزارشگيري Devexpress استفاده كني كه خود باركد رو از روي كد شما ايجاد ميكنه. البته اگر درست فهميده باشم :gol:

مرسی از پاسختون
مشکل من اینه که نمی دونم در سی شارپ با پایگاه داده اکسس چطور گزارش بگیریم
اگه یه مثال واسم بیارید ممنون میشم
نحوه ایجاد ارتباط با کرستال ریپورت و استفاده از یک کوئری که فیلد مورد نظر منو چاپ کنه - کوئری اکسس
 

negin17h

مدیر تالارهای مهندسی کامپیوتر و رباتیکمتخصص #C
مدیر تالار
مرسی از پاسختون
مشکل من اینه که نمی دونم در سی شارپ با پایگاه داده اکسس چطور گزارش بگیریم
اگه یه مثال واسم بیارید ممنون میشم
نحوه ایجاد ارتباط با کرستال ریپورت و استفاده از یک کوئری که فیلد مورد نظر منو چاپ کنه - کوئری اکسس

راستش هیچ فرقی نداره. شما یک دیتاست ایجاد کن و فیلدها رو تعریف کن و براساس آن کریستال رو بساز و طراحی کن و بعد یک دیتاست با همان نام فیلدها رو پر کن با کوئری و به عنوان منبع به instance آن کریستال بده :gol:
 

nafis...

مدیر بازنشسته
با تشکر
این خط: if (row.Cells[2].Value.ToString() == comboBox1.SelectedItem.ToString())
این خطا: Object reference not set to an instance of an object.
یه جا متغیرتون مقدار null داره، یا مقدار دهی نشده
ببینید کجاها دارین مقدار null وارد میکنید.
مثلا جدول دیتابیس شما 10تا فیلد داره شما 11امی را داری صدا میزنی
 

hkyan

عضو جدید
یه جا متغیرتون مقدار null داره، یا مقدار دهی نشده
ببینید کجاها دارین مقدار null وارد میکنید.
مثلا جدول دیتابیس شما 10تا فیلد داره شما 11امی را داری صدا میزنی
با تشکر
هر چی میگردم چیز null پیدا نمی کنم به محض اجرا این ارور را میده
کاری که من میخوام بکنم اینه اکه یک کمبوباکس دارم با یه دیتاگرید وید من میخوام با وارد کردن هر مقدار در کمبوباکس سطر اون مقدار در دیتاگرید ویو سلکت بشه در حقیقت یه جور سرچ هستش
 

جفنگ نگو

عضو جدید
با تشکر
هر چی میگردم چیز null پیدا نمی کنم به محض اجرا این ارور را میده
کاری که من میخوام بکنم اینه اکه یک کمبوباکس دارم با یه دیتاگرید وید من میخوام با وارد کردن هر مقدار در کمبوباکس سطر اون مقدار در دیتاگرید ویو سلکت بشه در حقیقت یه جور سرچ هستش
مشکل شما اینکه تعریف نکردی کدام سطر رو میخواهید انتخاب کنید

کد صحیح به شکل زیر است (البته بر گرفته از چیزی که شما نوشته اید )


PHP:
 if (row[counter].Cells[2].Value.ToString() == comboBox1.Text.ToString())

counter = شمارنده سطر است

موفق باشید
 

hkyan

عضو جدید
مشکل شما اینکه تعریف نکردی کدام سطر رو میخواهید انتخاب کنید

کد صحیح به شکل زیر است (البته بر گرفته از چیزی که شما نوشته اید )


PHP:
 if (row[counter].Cells[2].Value.ToString() == comboBox1.Text.ToString())

counter = شمارنده سطر است

موفق باشید

با تشکر


private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) foreach (DataGridViewRow row in dataGridView1.Rows) { if (row.Cells[2].Value.ToString() == comboBox1.Text.ToString()) { DataGridViewCell cell = row.Cells[2]; dataGridView1.CurrentCell = cell; dataGridView1.BeginEdit(true); break; } }
توی حلقه مشخص شده.
 

جفنگ نگو

عضو جدید
با تشکر


private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) foreach (DataGridViewRow row in dataGridView1.Rows) { if (row.Cells[2].Value.ToString() == comboBox1.Text.ToString()) { DataGridViewCell cell = row.Cells[2]; dataGridView1.CurrentCell = cell; dataGridView1.BeginEdit(true); break; } }
توی حلقه مشخص شده.

ببخشید متوجه حلقه نشدم

مشکل شما یقینا از دیتا گرید هست چرا که سطر اخر دیتا گرید همیشه مقدار null داره مگر اینکه شما از حلقه for استفاده کنید یا خصوصیت allow user to add rows دیتاگرید رو برابر false قرار دهید

تکه کد زیر رو ببینید

PHP:
            dataGridView1.AllowUserToAddRows = false;
            dataGridView1.CurrentRow.Selected = false;
            foreach (DataGridViewRow row in dataGridView1.Rows)
            {
                if (row.Cells[0].Value.ToString() == "a")
                    dataGridView1.Rows[row.Index].Selected = true;
            }
 

hkyan

عضو جدید
ببخشید متوجه حلقه نشدم

مشکل شما یقینا از دیتا گرید هست چرا که سطر اخر دیتا گرید همیشه مقدار null داره مگر اینکه شما از حلقه for استفاده کنید یا خصوصیت allow user to add rows دیتاگرید رو برابر false قرار دهید

تکه کد زیر رو ببینید

PHP:
            dataGridView1.AllowUserToAddRows = false;
            dataGridView1.CurrentRow.Selected = false;
            foreach (DataGridViewRow row in dataGridView1.Rows)
            {
                if (row.Cells[0].Value.ToString() == "a")
                    dataGridView1.Rows[row.Index].Selected = true;
            }
با تشکر
همون پیغام خطا را برای این کد میده:
dataGridView1.CurrentRow.Selected = false;
 

جفنگ نگو

عضو جدید
با تشکر
همون پیغام خطا را برای این کد میده:
dataGridView1.CurrentRow.Selected = false;
این کد که چیز خاصی نیست

این کد به این صورت کار میکند که اگر شما سطری از دیتا گرید رو انتخاب کرده باشید اون رو غیرانتخاب (چجوری بگم اینو اخه :confused: ) Deselect میکند

میتوانید حذفش کنید
 

hkyan

عضو جدید
این کد که چیز خاصی نیست

این کد به این صورت کار میکند که اگر شما سطری از دیتا گرید رو انتخاب کرده باشید اون رو غیرانتخاب (چجوری بگم اینو اخه :confused: ) Deselect میکند

میتوانید حذفش کنید
با تشکر
الان مشکل من اینه که سرچم کار نمی کنه
میخوام با وارد کردن یه مقدار در کمبوباکس ردیف اون مقدار تو دیتاگرید ویو سلکت بشه
 

hkyan

عضو جدید
کدت رو باز ببینم چی نوشتی رو هوا که نمیتونم راهنمائی کنم :D
با تشکر
شما روی زمین هم ما را راهنمایی کنی قبولت داریم.اینم کدش
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
dataGridView1.AllowUserToAddRows = false;

if (comboBox1.SelectedValue != null)
{
foreach (DataGridViewRow row in dataGridView1.Rows)
{
if (row.Cells[2].Value.ToString() == comboBox1.Text) //0 is for 1st column
{
DataGridViewCell cell = row.Cells[0];
dataGridView1.CurrentCell = cell;
dataGridView1.BeginEdit(true);
break;
}
}
}
}
 

جفنگ نگو

عضو جدید
با تشکر
شما روی زمین هم ما را راهنمایی کنی قبولت داریم.اینم کدش
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
dataGridView1.AllowUserToAddRows = false;

if (comboBox1.SelectedValue != null)
{
foreach (DataGridViewRow row in dataGridView1.Rows)
{
if (row.Cells[2].Value.ToString() == comboBox1.Text) //0 is for 1st column
{
DataGridViewCell cell = row.Cells[0];
dataGridView1.CurrentCell = cell;
dataGridView1.BeginEdit(true);
break;
}
}
}
}

یه زحمتی برات داشتم

اگر لطف کنی و کدهات رو داخل تک php یا html یا code قرار دهید خیلی بهتر میتوان ان را مشاهده کرد

مورد شما اینکه شرط زیر مقدار true رو نخواهد دید پس در نتیجه ادامه کد اجرا نخواهد شد

PHP:
if (comboBox1.SelectedValue != null)

میتوانید از متد یا روش دیگری برای چک کردن استفاده کنید یا کلا حذفش کنید بستگی به برنامه شما داره
 

hkyan

عضو جدید
با تشکر دوباره



PHP:
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            dataGridView1.AllowUserToAddRows = false;
           
                foreach (DataGridViewRow row in dataGridView1.Rows)
                {
                    if (row.Cells[2].Value.ToString() == comboBox1.Text) //0 is for 1st column
                    {
                        DataGridViewCell cell = row.Cells[0];
                        dataGridView1.CurrentCell = cell;
                        dataGridView1.BeginEdit(true);
                        break;
                    }
                }
           
        }

شرط هم پاک کردم
 

جفنگ نگو

عضو جدید
یه برنامه سریع برات نوشتم ببین درست کار میکنه

همچین چیزی احتیاج داری یا بنده درست متوجه منظور شما نشدم
 

پیوست ها

  • SelectCell.zip
    39.3 کیلوبایت · بازدیدها: 0

hkyan

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

جفنگ نگو

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

فرقی نداره که شما از دیتا گرید انتخاب کنید یا از کامبوباکس ، یکسری کد ساده هست که باید بنویسید

اما اشتباه شما اینکه میخواهید مقدار رو در کامبوباکس به صورت دستی تایپ کنید برای این کار برنامه نویسان محترم دات نت تکست باکس رو ساخته اند به نظر من که نوشتن در کامبو باکس کار اشتباه و بی معنی هست

کامبوباکس برای اینکه شما ایتمی از بین ایتم های داده شده انتخاب و از داده های ان استفاده کنید نه که متنی در اون تایپ کنید

به هر صورت اگر در قسمت کد نویسی مشکلی داشتید کد مورد نظر یا برنامه رو اینجا قرار دهید تا بنده و دوستان شما رو راهنمائی کنیم

موفق باشید
 

Similar threads

بالا