PDA

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



shahrzad87
یک شنبه 12 تیر 1390, 10:20 صبح
سلام
واسه جستجو من این رو نوشتم ولی وقتی فیلدهای DG خالی هست میخوام همه سطرهای جدول رو نشون بده، این کدرو نوشتم اما وقتی DG خالیه کار نمی کنه، error میده که null هست و اجرا قطع میشه:

if (dG_Bkala.CurrentRow.Cells["name1"].Value != null)
{
string kalaName = null;
kalaName = dG_Bkala.CurrentRow.Cells["name1"].Value.ToString();
tbl_kalaTableAdapter.FillBy_name1(dS_main.Tbl_kala , kalaName);
}

else
tbl_kalaTableAdapter.Fill(dS_main.Tbl_kala);


یک سوال دیگه از SQL دارم D:
یکی از جدولهام یک فیلد داره که می خوام عکس توش ذخیره کنم و نوعش رو image گذاشتم، این جدول رو به DG وصل کردم، چجوری موقع اجرا عکس رو به فیلد DG بدم؟

:-??

Esmail Solhkhah
یک شنبه 12 تیر 1390, 10:58 صبح
شما گرید رو احتمالا به BindingSource متصل کردید
دراینصورت روش بهتر برای جستجو اینه که از خاصیت Filter مربوط به BindingSource استفاده کنید


private void txtName_TextChanged(object sender, EventArgs e)
{
try
{
kalaBindingSource.Filter = "Name Like '%" + txtName.Text + "%'";
}
catch
{
}
}

در مورد سوال بعدی : از Stored Procedure ها استفاده کنید.

shahrzad87
یک شنبه 12 تیر 1390, 11:09 صبح
مرسی :) بله به bindingsource وصل کردم.
من زیاد با stored procedure کار نکردم، میشه بیشتر توضیح بدین؟
بعدش موقع اجرا چجوری به فیلد عکس آدرس عکس رو بدم؟

:-|

Esmail Solhkhah
یک شنبه 12 تیر 1390, 11:19 صبح
جستجو کنید

این مورد دربارش زیاد تو این تالار بحث شده

تو برنامه های نمونه هم میتونید کد براش پیدا کنید.

موفق باشید.

shahrzad87
یک شنبه 12 تیر 1390, 11:35 صبح
شما گرید رو احتمالا به BindingSource متصل کردید
دراینصورت روش بهتر برای جستجو اینه که از خاصیت Filter مربوط به BindingSource استفاده کنید


private void txtName_TextChanged(object sender, EventArgs e)
{
try
{
kalaBindingSource.Filter = "Name Like '%" + txtName.Text + "%'";
}
catch
{
}
}




میشه بیشتر توضیح بدین!! :-|
یک txtbox بگذارم و توی event ، textChanged این رو بنویسم واسه button جستجو چی بنویسم که نتیجه سطرهایی که name1اشون این هست رو توی DG نشون بده؟

Esmail Solhkhah
یک شنبه 12 تیر 1390, 11:45 صبح
دقیقا همون کد رو برای رویداد کلیک دکمه هم بنویسید

خب گرید فیلتر میشه و بر اساس چیزی که تو تکست باکسه اطلاعات رو نشون میده

shahrzad87
یک شنبه 12 تیر 1390, 11:56 صبح
دقیقا همون کد رو برای رویداد کلیک دکمه هم بنویسید

خب گرید فیلتر میشه و بر اساس چیزی که تو تکست باکسه اطلاعات رو نشون میده

private void txt_BKname1_TextChanged(object sender, EventArgs e)
{
try
{
tblkalaBindingSource.Filter = "name1 Like '%" + txt_BKname1.Text + "%'";
}
catch(Exception)
{
}
}

private void btn_BKsearch_Click(object sender, EventArgs e)
{
try
{
tblkalaBindingSource.Filter = "name1 Like '%" + txt_BKname1.Text + "%'";
}
catch(Exception)
{
}

این رو نوشتم هیچ اتفاقی نمیفته!

Esmail Solhkhah
یک شنبه 12 تیر 1390, 12:00 عصر
اصولا نباید موردی باشه مگه اینکه !:متفکر:

میتونید کد بزارید بررسی شه ؟

Esmail Solhkhah
یک شنبه 12 تیر 1390, 12:06 عصر
ببینید نیازی نیست شما برای هر جستجو از FillBy استفاده کنید در اینصورت که بار زیادی به منابع سیستم وارد میکنید

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

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

shahrzad87
یک شنبه 12 تیر 1390, 12:06 عصر
اصولا نباید موردی باشه مگه اینکه !:متفکر:

میتونید کد بزارید بررسی شه ؟

کد رو گذاشتم دیگه!
یه فرم دارم با یک DG که به جدول کالا وصل هست و یک btn برای جستجو. واسه ارتباط با sql هم توی صفحه setting یک connectionString ساختم و جدولم رو با tableAdapter توی dataSet گذاشتم!

Esmail Solhkhah
یک شنبه 12 تیر 1390, 12:09 عصر
کد رو گذاشتم دیگه!
یه فرم دارم با یک DG که به جدول کالا وصل هست و یک btn برای جستجو. واسه ارتباط با sql هم توی صفحه setting یک connectionString ساختم و جدولم رو با tableAdapter توی dataSet گذاشتم!

تو فرمتون گرید پره ؟

shahrzad87
یک شنبه 12 تیر 1390, 12:26 عصر
تو فرمتون گرید پره ؟

tbl_kalaTableAdapter.Fill(dS_main.Tbl_kala);
این رو که بنویسم همه سطرها رو نشون میده اما من cmntاش کردم که وقتی دکمه جستجو رو می زنم و فیلدها خالی هست، DG پر شه.

shahrzad87
یک شنبه 12 تیر 1390, 12:31 عصر
مشکلم انه که چجوری چک کنم که کاربر توی DG چیزی نوشته یا نه!؟
وگرنه کد نمایش همه سطرها و کد نمایش سطرهایی که فیلد name1اشون مقدار خاصی باشه رو بلدم.

Esmail Solhkhah
یک شنبه 12 تیر 1390, 12:33 عصر
مگه کاربر تو گرید اطلاعات رو وارد میکنه؟

چرا اینجوری؟

shahrzad87
یک شنبه 12 تیر 1390, 12:46 عصر
مگه کاربر تو گرید اطلاعات رو وارد میکنه؟

چرا اینجوری؟

اول با DB بود که جواب نداد، حالا textbox گذاشتم که با اون جستجو کنه و توی DB نشون بده اما وقتی textbox خالی هست چیزی نشون نمیده ولی وقتی پر هست درست کار می کنه!

private void btn_BKsearch_Click(object sender, EventArgs e)
{
if (txt_BKname1.Text != null)
{
tbl_kalaTableAdapter.FillBy_name1(dS_main.Tbl_kala , txt_BKname1.Text);
}
else
tbl_kalaTableAdapter.Fill(dS_main.Tbl_kala);
}

Esmail Solhkhah
یک شنبه 12 تیر 1390, 12:53 عصر
یه برنامه نمونه مینویسم واستون میفرستم

shahrzad87
یک شنبه 12 تیر 1390, 12:56 عصر
:گریه:
نمیدونم چرا درست کار نمی کنه!

Esmail Solhkhah
یک شنبه 12 تیر 1390, 13:20 عصر
دوست عزیز این برنامه نمونه رو واسه رفع مورد شما نوشتم

فقط به کانکشن استرینک دقت کنید

shahrzad87
یک شنبه 12 تیر 1390, 22:27 عصر
شاید مشکل از کد دکمه "جدید" باشه!
برای ثبت اطلاعات از دیتاگرید استفاده کردم یعنی کاربر اطلاعاتش رو توی دیتاگرید می نویسه و دکمه ثبت رو می زنه و ثبت میشه، واسه ی اینکه بعد از ثبت لازم نباشه کاربر دستی یکی یکی همه ی مقدارای توی فیلدهای دیتاگرید رو پاک کنه، یک دکمه به اسم "جدید" گذاشتم و این کد رو توش نوشتم:

if (this.dG_Vkalar.DataSource != null)
{
this.dG_Vkalar.DataSource = null;
}
else
{
this.dG_Vkalar.Rows.Clear();
}

بعد از اینکه یکبار این کلید رو می زنم دیگه نتیجه ای واسه جستجو نشون نمی ده، ممکنه به خار این کد باشه؟