PDA

View Full Version : سوال: جستجو با دو تا COmbobox!!



Mohandes2009
دوشنبه 21 دی 1388, 13:41 عصر
دوتا combo دارم می خوام از اولی حالت جستجو (مثلا نام , نام خانوادگی و..) را انتخاب کنم بعد یه سری دیتا گرید دارم که اطلاعات ان ها همه داخل یه دیتا بیس در sql وارد میشه ..
با دیتا گرید اومدم بر حسب الفبا مرتب کردم

حالا Combo دوم من خاصیت DropDownStyle اون در حالت Simple هست که مثلا اگر در combo دوم بنویسیم علی و از combo اولی نام انتخاب شده باشه حالا از دیتا گرید ها یا از Sql هر چی علی هست را برام لیست کنه...

کسی فهمید چی گفتم؟:گریه::افسرده:

اگه فهمیدید جواب بدین:خجالت:

slashslash2009
دوشنبه 21 دی 1388, 13:53 عصر
خوب کدشو بنویس دیگه خودت که همه چیو گقتی

Mohandes2009
دوشنبه 21 دی 1388, 14:20 عصر
خوب کدشو بنویس دیگه خودت که همه چیو گقتی
خب اگه بلد بودم که اینجا نمی نویشتم :لبخند:

slashslash2009
دوشنبه 21 دی 1388, 14:30 عصر
اصلا واضح نگفتین ولی اگه میخواین که مثلا وقتی یک نام رو از کامبوی اولی انتخاب کنید و بعدش مثلا فامیل طرف رو در کامبوی دومی نشون بده جلوی where دستور سلکت مقدار کامبوی اولی رو بنویس و این کدا رو در کامبوی اولی باید بنویسی(SelectedIndexChanged) و به همین ترتیب

FastCode
دوشنبه 21 دی 1388, 14:30 عصر
هر چی نوشتی بفرست که برات کامل کنیم.

csharpprogramer88
دوشنبه 21 دی 1388, 18:39 عصر
سوال شما واضح نيست ولي از اين كد استفاده كن شايد مشكلت حل بشه



con.Open();
cmd = new SqlCommand("select distinct (city) from honar", con);
dr = cmd.ExecuteReader();
while (dr.Read())
{
cmbcity.Items.Add(dr[0].ToString());

}
con.Close();


اينو تو پيج لود بنويس كاري هم كه انجام مي ده اينه : شهرهاي موجود را از جدول هنر انتخاب مي كند و شهرهاي تكراري را حذف مي كند و به كومبو شهر اضافه مي كند .



da = new SqlDataAdapter("select * from honar where(city='" + cmbcity.Text.ToString() + "')", con);
da.Fill(ds, "honar");
bs.DataSource = ds.Tables["honar"];
dataGridView1.DataSource = bs;


اين كدو تو cmbcity_SelectedIndexChanged بنويس

seven7777777
دوشنبه 21 دی 1388, 21:42 عصر
سلام
فکر کنم دوستمون می خوان یه نوع فیلترینگ رو با توجه به دوتا کمبو انجام بدن .
یک کمبو فیلد مورد جستجو رو مشخص می کنه .
یک کمبو هم که به شکل DropDownList هست مقادیر تاثیر گذار در عملیات فیلترینگ رو نگه می داره .
بعد با زدن یک کلید باید اطلاعات گریدها فیلتر بشن .
خوب این که کاری نداره ، شما باید بعد از ورود کامل اطلاعات فیلترینگ توسط کاربر با یک سری کوئری جداول محدود کنی . اگه از DataSet استفاده می کنی ، برو تو حالت Designer اون و برای جدول مورد نظرت چند کوئری کههرکدوم یکی از فیلدها رو ساپورت میکنه تعریف کن و در نهایت در هنگام پر کردن DataSet به جای .Fill() بنویس .FillBy یا هر چی که اسمشو گذاشتی مثل .FillByFirstname .

حله ؟؟؟ سوال دیگه ای هم هست ؟ البته شاید دوستان راه حل های بهتری هم بلد باشن که حتما هم همینطوره !!!

Mohandes2009
دوشنبه 21 دی 1388, 22:49 عصر
سلام
فکر کنم دوستمون می خوان یه نوع فیلترینگ رو با توجه به دوتا کمبو انجام بدن .
یک کمبو فیلد مورد جستجو رو مشخص می کنه .
یک کمبو هم که به شکل DropDownList هست مقادیر تاثیر گذار در عملیات فیلترینگ رو نگه می داره .
بعد با زدن یک کلید باید اطلاعات گریدها فیلتر بشن .
خوب این که کاری نداره ، شما باید بعد از ورود کامل اطلاعات فیلترینگ توسط کاربر با یک سری کوئری جداول محدود کنی . اگه از DataSet استفاده می کنی ، برو تو حالت Designer اون و برای جدول مورد نظرت چند کوئری کههرکدوم یکی از فیلدها رو ساپورت میکنه تعریف کن و در نهایت در هنگام پر کردن DataSet به جای .Fill() بنویس .FillBy یا هر چی که اسمشو گذاشتی مثل .FillByFirstname .

حله ؟؟؟ سوال دیگه ای هم هست ؟ البته شاید دوستان راه حل های بهتری هم بلد باشن که حتما هم همینطوره !!!

دهنت طلا همین منظورم بود اما من با linq دارم مینویسمش خوب بود مرسی کمی فهمیدم یه چیزایی:بوس:ولی با زدن یه کلید نه همون تو حالت DropDownList که مینویسم تو قسمت پایینی لیست کنه
مثلا نام را از کمبو اول انتخاب می کنم و منویسم در DropDownList علی بعد هر چی علی هست با فامیلشون در لیستی که زیر DropDownList هست بیاره بعد وقتی کلیک کردم روی یکی از اونا رو دیتا گرید سطرش انتخاب بشه:خجالت:

Mohandes2009
سه شنبه 22 دی 1388, 12:42 عصر
سوال شما واضح نیست ولی از این کد استفاده کن شاید مشکلت حل بشه



con.Open();
cmd = new SqlCommand("select distinct (city) from honar", con);
dr = cmd.ExecuteReader();
while (dr.Read())
{
cmbcity.Items.Add(dr[0].ToString());

}
con.Close();


اینو تو پیج لود بنویس کاری هم که انجام می ده اینه : شهرهای موجود را از جدول هنر انتخاب می کند و شهرهای تکراری را حذف می کند و به کومبو شهر اضافه می کند .



da = new SqlDataAdapter("select * from honar where(city='" + cmbcity.Text.ToString() + "')", con);
da.Fill(ds, "honar");
bs.DataSource = ds.Tables["honar"];
dataGridView1.DataSource = bs;


این کدو تو cmbcity_SelectedIndexChanged بنویس
مرسی خوب بود:بوس:

seven7777777
سه شنبه 22 دی 1388, 18:11 عصر
خوب همونی که میگی دیگه ، تو رویداد تغییر مقدار DropDown فرمت دستوراتی که می خوای بنویس . فکر نمی کنم مشکلی باشه ؟!؟!؟!؟!

slashslash2009
سه شنبه 22 دی 1388, 18:45 عصر
مشکل شما یک مشکل الگوریتمی هست خودتون باید حلش کنید هزارتا راه وجود داره یک چیز سلیقه ای است

Mohandes2009
چهارشنبه 23 دی 1388, 08:40 صبح
مشکل شما یک مشکل الگوریتمی هست خودتون باید حلش کنید هزارتا راه وجود داره یک چیز سلیقه ای است

من اینا را نوشتم ببینید چرا غلطه:گریه:



privatevoid comboBox2_TextChanged_1(object sender, EventArgs e)
{
switch (comboBox1.SelectedIndex)
{
case 0:
var q = from c in linq.Telphones
where c.Name.Substring(0, 1) == comboBox2.Text
selectnew { c.Name, c.Family };
comboBox2.DataSource = q.ToString();
break;

case 1:
var q1 = from c in linq.Telphones
where c.Family.Substring(0, 1) == comboBox2.Text
selectnew { c.Name, c.Family };
comboBox2.DataSource = q1.ToString();
break;
}
}

saed2006
چهارشنبه 23 دی 1388, 09:06 صبح
من اینا را نوشتم ببینید چرا غلطه:گریه:



privatevoid comboBox2_TextChanged_1(object sender, EventArgs e)
{
switch (comboBox1.SelectedIndex)
{
case 0:
var q = from c in linq.Telphones
where c.Name.Substring(0, 1) == comboBox2.Text
selectnew { c.Name, c.Family };
comboBox2.DataSource = q.ToString();
break;

case 1:
var q1 = from c in linq.Telphones
where c.Family.Substring(0, 1) == comboBox2.Text
selectnew { c.Name, c.Family };
comboBox2.DataSource = q1.ToString();
break;
}
}



q1.ToString() این یک چیز بی معنی هست

saed2006
چهارشنبه 23 دی 1388, 09:29 صبح
عزیز جان چرا دقت نمیکنی
نتیجه برگشتی جستجوی شما دو فیلد هست
شما نمیتونی هر دو اینها رو به combo بایند کنی
بهتره به جای استفاده از کمبو جهت نمایش نتیجه از دیتا گرید استفاده کنی
یا اینکه tostring رو بردار و بایند کن

Mohandes2009
چهارشنبه 23 دی 1388, 09:47 صبح
q1.ToString() این یک چیز بی معنی هست

برداشتم حالا وقتی تو combo2 تایپ می کنم مثلا علی

تو لیست زیرش میاره Name= علي family =جعفري

من می خوام فقط بیاره علی جعفری

یعنی Name و Family را نزنه:گریه:

saed2006
چهارشنبه 23 دی 1388, 09:54 صبح
شما دو تا راه داری
1-مقادیر رو از دیتابیس بخونی و مقادیری که خوندی رو توی یک متغیر جدید بریزی و حالا متغیر رو به کمبو اضافه کنی
2-عنوان family و name رو به اون چیزی که میخوای تغییر بدی

saed2006
چهارشنبه 23 دی 1388, 09:57 صبح
نتیجه جستجو رو کجا میخوای بریزی؟
نتیجه جستجو چند تا فیلد بازگشتی داره؟

Mohandes2009
چهارشنبه 23 دی 1388, 10:02 صبح
نتیجه جستجو رو کجا میخوای بریزی؟
نتیجه جستجو چند تا فیلد بازگشتی داره؟
می خوام نتیجه را در لیست کمبو دومی بریزم:افسرده: و دوتا فیلد

saed2006
چهارشنبه 23 دی 1388, 10:08 صبح
ببین شما مقدار رو از دیتا بیس بخون
بعد دو تا فیلد رو به هم بچسبون و اینبار اضافه کن به combo
منظورم اینه که مستقیما بایند نکن

Mohandes2009
چهارشنبه 23 دی 1388, 10:11 صبح
ببین شما مقدار رو از دیتا بیس بخون
بعد دو تا فیلد رو به هم بچسبون و اینبار اضافه کن به combo
منظورم اینه که مستقیما بایند نکن

var q = (from c in linq.Telph
ones
where c.Name.Substring(0, 1) == comboBox2.Text
select c).First();
string qq = q.Name + q.Family;

comboBox2.DataSource = qq;



نمیشه ارور

Complex DataBinding accepts as a data source either an IList or an IListSource

را میده

saed2006
چهارشنبه 23 دی 1388, 10:27 صبح
comboBox1.Items.Add(q);


اینطوری اضافه کن

Mohandes2009
چهارشنبه 23 دی 1388, 10:35 صبح
comboBox1.Items.Add(q);


اینطوری اضافه کن

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