PDA

View Full Version : مشکل نمایش چند سطر در گریدویو



piter11
پنج شنبه 08 مهر 1395, 09:18 صبح
سلام من میخوام وقتی رو هر چک باکسی کلیک میکنم نتایج مربوط به اون سطر رو نشون بده حالا مشکل اینجاست یه بار دکمه جستجو رو میزنم نتایج نشون میده در گرید ویو تا اینجا درست ولی بعدش دوباره کلیک میکنم و چک باکس های دیگرو انتخاب میکنم مقادیر سطر های قبلی هستش زیرش میوفته نتایج یعنی واسه آیدی 4 و 6 بجای دوتا رکورد 4 تا رکورد نشون میده
من میخوام کاری کنم وقتی دکمه جستجو میزنم بیاد اول مقادیر قبلی datatable خالی کنه و بعد جدید نشون بده یعنی سورس خالی کنه

142814

taze kar 1
پنج شنبه 08 مهر 1395, 10:17 صبح
سلام
دوست گلم لطفا کدتو بزار شاید بشه کمکت کرد

malloc
پنج شنبه 08 مهر 1395, 11:09 صبح
سه سوال اساسی اینکه چرا اون موارد جستجو رو داخل GridView گذاشتی ؟؟؟؟ که مشکل دسترسی بهش رو داشته باشی ؟

piter11
پنج شنبه 08 مهر 1395, 13:15 عصر
اونا برای یه چیز دیگس دکمه فقط دکمه جستجو
اینم کدش:
if (CheckBox3.Checked == true)
{

SqlCommand cmd = new SqlCommand("select Id,Startyear as ['سال شروع'] from Educationalinformation", con);

SqlDataAdapter dr = new SqlDataAdapter(cmd);


con.Close();
dr.Fill(dt);

GridView1.DataSource = dt;
GridView1.DataBind();

piter11
پنج شنبه 08 مهر 1395, 13:17 عصر
if زیاد گذاشتم میخوام کاری کنم وقتی رو دکمه جستجو کلیک میکنم هر باز بیاد مقادیر گریدویو پاک کنه بعد انتخابای جدید رو که تیک زدم رو دکمه جستجو کلیک کردم نتایج جدید بیاره
ازسن دستور در ابتدای کد استفاداه میکنم ولی تاثیری نداره
dt.Columns.Clear();
dt.Rows.Clear();

taze kar 1
پنج شنبه 08 مهر 1395, 14:55 عصر
با این کد متوجه نشدم!!
وقتی تیک میزنی که بر اساس اون فیلتر شه
کوئری کجا تغییر میکنه؟؟؟

taze kar 1
جمعه 09 مهر 1395, 10:49 صبح
ها فهمیدیم مشکلت چیه
یادت باشه کوئری تو بد نوشتی
یعنی باید یکم روی پردازش متن کار کنی که هروقت تیک یه فیلد زده میشه اضافه شه به کوئری خودش یه کوئری کامل نخواد!!!

حالا اینی که میگم اگه انجام بدی تنها و تنها تیک آخری که میزنی کار میکنه تیک قبلی بی اثر میشه



اول اینکه SqlCommand cmd رو سراسری تعریف کن

دوما SqlDataAdapter سراسری تعریف کن

سوما



if (CheckBox3.Checked == true)

{

cmd = null

دوباره یه کوئری جدید توش بذار




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


dr.Fill(dt);
GridView1.DataSource = dt;
GridView1.DataBind();

piter11
شنبه 10 مهر 1395, 10:58 صبح
یه مشکل دیگه هم هست واسه تیک زدن چند تا چک باکس باید چطور بنویسم که فقط تیک هایی که زدم رو فیلداشونو نشون بده؟
مثلا یه نمونش اینجور نوشتم ولی این میشه 100 ها حالت که باید if بزارم ! چه راهی هست؟
if (checkbox1.checked==true && checkbox2.checked==trye)
{
کوئری واکشی و نمایش

}

taze kar 1
شنبه 10 مهر 1395, 22:38 عصر
کوئری ای که مینویسی یه دو بخش ثابت(Selectوfrom) و یک بخش متغیر(فیلد های جدول بانک اطلاعاتی) داره
قسمت متغیر باید یه متغیر string باشه
وقتی ture شد اسم فیلد به همرا کاما به متغیر اضافه شه فقط کاری که باید بکنی اینه که متغیر برای فیلد اخر نباید کاما داشته باشه
اگه امکانش هست یه فیلد ثابت در نظر بگیر که کارت راحت شه وگرنه پردازش متن کن قبل از From کاما رو پاک کن

نکته بعد از همه if ها باید فقط یکبار کوئری اجرا بشه در داخل if تنها باید کوئری کامل بشه امیدوارم منظورمو درک کنی

piter11
دوشنبه 12 مهر 1395, 11:47 صبح
میشه مثالی بزنید