PDA

View Full Version : چگونه اطلاعات گریدویو را فیلتر کنم



ghamgin
دوشنبه 07 فروردین 1391, 13:08 عصر
سلام
و تشکر از دوستان
من یک فرم اصلی دارم که در اون یک کلید با نام فیلتر دارم و یک گریدویو
با زدن کلید فیلتر یک فرم باز می شه که در اون سه تا لینک لیبل دارم که با کلیک روی هر کدوم یک listbox باز می شه( و اطلاعات هر لیست متفاوت هست) با انتخاب هر ایتم از لیست . ایتم انتخاب شده در یک لیبل نمایش داده می شه. یک کلید بهمفثق هم در این فرم دارم که در نهایت با کلیک بر روی اون باید بر اساس موارد موجود در لیبل ها (موارد انتخابی از لیست ها) فیلتر روی ستون های گریدویو انجام بشه من برای هر لیبل این کد رو نوشتم اما بعدش نمی دونم باید چکار کنم. خواهش می کنم راهنمایی بفرمایید
(متن موجود در هر لیبل رو اول شکستم و بعد کوئری هایی نوشتم و با هم or کردم............؟؟؟؟؟؟؟


string[] a10 = lb1.Split(',');
for (int i10 = 0; i10 < a10.Length; i10++)
{
query += " OR ";
query += " Name = '" + a10[i10] + "'";
string s10 = a10[i10];
}
query += ")";
//==================================
queryFilter = query;
//==================================
publicvoidfillgrid_filter()
{
dgv.DataSource = amoozesh.Selectall(queryFilter);

}

اما روی And کد زیر خطای Syntax near And رو میده


publicstaticDataTableSelectall(string Conditions)
{
DataTabledt = newDataTable();
SqlConnection connection = newSqlConnection(database.GetConnectionString());
try
{
connection.Open();
stringsqlStatement = "SELECT * FROM amoozesh Where 1=1 AND " + Conditions;
SqlCommandsqlCmd = newSqlCommand(sqlStatement, connection);
SqlDataAdaptersqlDa = newSqlDataAdapter(sqlCmd);

sqlDa.Fill(dt);
returndt;

}
catch (System.Data.SqlClient.SqlException ex)
{
MessageBox.Show("Error");
}
finally
{
connection.Close();
}
returnnull;

}

where 1=1
یعنی یه جورایی اگر موجود نبو د هم اطلاعات رو بر گردونه(مثل اینه که بگی درست ها رو بر گردون و یا اگر اطلاعاتی نبود خطایی نده...)
دوم مشکل من هم توی همین یک خط کدی که اشاره فرمودید هست
و
نمی دونم چکار کنم...!
استاد راهنمایی کردند در این حالت and نباید تولید بشه...
خواهش می کنم راهنمایی کنید خیلی مهمه برام...!!

NiMble_m
دوشنبه 07 فروردین 1391, 18:55 عصر
شما لطف کن بگو داخل متغیر Condition چه چیزی ریخته میشه
و همچنین واسه چی پنج خط اول رو انجام دادید، دقیقا چه هدفی داشتید

asemaneiran
دوشنبه 07 فروردین 1391, 21:34 عصر
شما لطف کن بگو داخل متغیر Condition چه چیزی ریخته میشه
و همچنین واسه چی پنج خط اول رو انجام دادید، دقیقا چه هدفی داشتید



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

Hybrid
دوشنبه 07 فروردین 1391, 21:48 عصر
سلام ، دوست عزیز روشتون درسته ولی اصلا توصیه نمیشه شما اول بگو چرا داری اون مقادیر انتخاب شده رو در داخل یک لیبل نمایش میدی و بعد جداشون میکنی و بر اساسه اونا فیلتر رو انجام میدی؟؟؟

میتونی اونا رو داخل چند متغیر قرار بدی ، به نظرتون بهتر نبود ؟؟ در رابطه با اون 1=1 بهتره که با یک دستور if چک کنی که اگر مثلا سطری وجود نداشت خودش به صورت پیشفرض یک دستور رو نمایش بده

NiMble_m
سه شنبه 08 فروردین 1391, 02:38 صبح
شما فرمتو بزار من توی اولین فرصت درستش میکنم واستون ارسال می کنم
واقعا اینجوری نمیشه جواب درستی داد

asemaneiran
سه شنبه 08 فروردین 1391, 09:57 صبح
شما فرمتو بزار من توی اولین فرصت درستش میکنم واستون ارسال می کنم
واقعا اینجوری نمیشه جواب درستی داد

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

ali_habibi1384
سه شنبه 08 فروردین 1391, 12:07 عصر
اينايي رو كه نوشتي نميدونم چه ربطي به سوالت داشت جز اينكه خودتو و ديگرانو گيج كني .حالا من جوابتو ميدم.(چگونه اطلاعات گریدویو را فیلتر کنم):


DataTable dttmp = new DataTable();
dt.DefaultView.RowFilter = ("YourField = '" + YourData + "'");
dttmp = dt.DefaultView.ToTable();
DataGrid.DataSurce=dttemp;

ali_habibi1384
سه شنبه 08 فروردین 1391, 12:14 عصر
سلام
ممنون از توجه تون..
گفتم که ایتم های توی لیست هر کدوم انتخاب بشه در لیبل مورد نظر ظاهر می شه . بعد براساس ایتم های توی لیبل که با کاما از هم جدا می شن. باید روی گرید فیلتر اعمال کنم. به همین دلیل در این پنج خط متن داخل لیبل رو شکستم و بعد کوئری نوشتم و برای هر لیبل رو or کردم
خواهش می کنم کمکم کنید

با دو تا شناسه عضو شدي؟!!!!!!!!!

NiMble_m
سه شنبه 08 فروردین 1391, 17:01 عصر
علی آقا شما ناراحت نشو دیگه تکرار نمیکنه

asemaneiran
چهارشنبه 09 فروردین 1391, 11:48 صبح
علی آقا شما ناراحت نشو دیگه تکرار نمیکنه

سلام ممنون از راهنمایی هاتون
اره
چون با اولی کسی راهنمایی نمی کرد (ظاهرا)...!!!!!!!!!!!!!!!

من از این کدها چیزی نفهمیدم می شه توضیح بفرمایید؟
بازم ممنون

asemaneiran
پنج شنبه 10 فروردین 1391, 10:11 صبح
سلام ممنون از راهنمایی هاتون
اره
چون با اولی کسی راهنمایی نمی کرد (ظاهرا)...!!!!!!!!!!!!!!!

من از این کدها چیزی نفهمیدم می شه توضیح بفرمایید؟
بازم ممنون

سلام مجدد
و تشکر دوباره
واقعا کسی نیست راهنمایی کند؟؟؟؟
خواهش می کنم کمک کنید....
چطور فیلتر رو از یک فرم به گرید یک فرم دیگه منتقل کنم؟
(در ضمن من از روی یک نمونه باید این پروژه رو بنویسم (توی اون نمونه باید طبق ایتم های لیست که در لیبل اومده . باید فیلتر اعمال بشه))
با سپاس

asemaneiran
پنج شنبه 10 فروردین 1391, 16:57 عصر
سلام مجدد
و تشکر دوباره
واقعا کسی نیست راهنمایی کند؟؟؟؟
خواهش می کنم کمک کنید....
چطور فیلتر رو از یک فرم به گرید یک فرم دیگه منتقل کنم؟
(در ضمن من از روی یک نمونه باید این پروژه رو بنویسم (توی اون نمونه باید طبق ایتم های لیست که در لیبل اومده . باید فیلتر اعمال بشه))
با سپاس

سلام مجدد
دوستان کسی نمی تونه راهنمایی کنه...!!!!!!!!

ghamgin
جمعه 11 فروردین 1391, 11:11 صبح
سلام مجدد
دوستان کسی نمی تونه راهنمایی کنه...!!!!!!!!

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

ali_habibi1384
یک شنبه 20 فروردین 1391, 20:41 عصر
جوابتو بهت دادم كه بابا. با defaultviwe اطلاعاتت رو فيلتر ميكني بعدش تبديل ميكني به table همون متد ToTable بعد ميريزي توي يك ديتا تيبل ديگه. آخرش هم ميريزي توي ديتا گريدت. بازم اگه مشكل داري بگو.