PDA

View Full Version : ربط ComboBox و datagrid



farzadini
چهارشنبه 02 بهمن 1392, 12:08 عصر
براي يك فرم كه شهرهاي يك استان رو از گريد ويو براساس انتخاب كمبوباكس (انتخاب استان) نشون بده اينكار كردم
دو تا تيبل توي اكسس درست كرده بودم كه يكي استان بود به همراه همون كدش و ديگري شهرهاي استان ها بودن به همراه كد خودشون همچنين يك ستوني هم داشت كه كد استان در اونجا قرار مي گرفت. (قراره تيبل اولي كدش در دراپ باكس فرم بياد و محتويات تيبل دومي هم در گريد ويو بيادش)
الان مي خوام وقتي فرم لود شد و گريد ويو همه شهر هارو نشون داد با استفاده از كمبو باكس كدي رو انتخاب كنم و بعد ليست گريدويو بصورت فيلتر شده از همون نوعي كه كمبو باكس انتخاب كرده برام نشون بده.
مثال: من كمبو باكس رو 31 انتخاب مي كنم و گريدويو اون شهرهاي اصفهان رو از بين همه ليستي كه در اختيارشه نشونم بده . ممكنه ربط كمبو باكس و گريد ويو رو بهم راهنمائي كنيد ممنونم
يعني اگر يك طرف كد SelectedIndexChange براي كمبو باكس بزارم اونطرف بگم ديتا گريد ويو چكار كنه؟

rayson
چهارشنبه 02 بهمن 1392, 12:40 عصر
سلام خسته نباشید.
اگر میخواهید بر اساس جدول استان شهرهای هر استان در دیتا گرید نمایش بدهید کافی از یک کوئری و یک شرط برای آن اسفتاده کنید
نمونه کد:
SqlConnection cnn = new SqlConnection(@"رشته اتصال");




DataSet ds = new DataSet();

SqlDataAdapter da = new SqlDataAdapter("select * from tbl_City where='" + cmbo_ostan.Text + "'", cnn);
cnn.Open();
da.Fill(ds, "town");


dataGridView1.DataSource = ds;
cnn.Close();

farzadini
چهارشنبه 02 بهمن 1392, 13:25 عصر
سلام خسته نباشید.
اگر میخواهید بر اساس جدول استان شهرهای هر استان در دیتا گرید نمایش بدهید کافی از یک کوئری و یک شرط برای آن اسفتاده کنید
نمونه کد:
SqlConnection cnn = new SqlConnection(@"رشته اتصال");




DataSet ds = new DataSet();

SqlDataAdapter da = new SqlDataAdapter("select * from tbl_City where='" + cmbo_ostan.Text + "'", cnn);
cnn.Open();
da.Fill(ds, "town");


dataGridView1.DataSource = ds;
cnn.Close();



جناب الانه من توي سي شارپ روي رويداد selectedIndexChanged كمبو باكس هستم .
توي متن اين كدها رو وارد كنم؟ ببخشيد از اطلاعات كم بندس سوالم ولي ديتا بيسم اكسس هست نه سي كوئل سرور.

rayson
چهارشنبه 02 بهمن 1392, 13:52 عصر
بله در قسمت SelecIndexChanged کمبو باکس خود بنویسید:
کد زیر برای اکسس هست:
OleDbConnection cnn = new OleDbConnection(@"رشته اتصال");




DataSet ds = new DataSet();

OleDbDataAdapter da = new OleDbDataAdapter("select * from tbl_City where ostan_name='" + cmbo_ostan.Text + "' ", cnn);
cnn.Open();
da.Fill(ds, "tbl_city");


dataGridView1.DataSource = ds.Tables["tbl_city"].DefaultView;

cnn.Close();

farzadini
چهارشنبه 02 بهمن 1392, 16:42 عصر
این صرف نظر از اینکه اسم جداول و اسم رشته اتصال که در کد شما هست با هم متفاوته . ولی به من ارور های مختلفی می داد. از جمله اینکه OleDbConnection رو غیر قابل تشخیص می دونست و چند مشکل دیگه.
می دونم که ممکنه مشکل از من باشه ولی میشه بیشتر توضیح بدید یا اینکه مثلا بفرمائید جریان این فاصله ها چیه؟ به این معنی هست که خط اول توی قسمتی غیر از selectedIndexChanged نوشته می شه یا احتمالا باید یوزینگ خاصی استفاده کنم؟ بسیار ممنون دوباره