PDA

View Full Version : سوال: مشکل عجیب با کومبو باکس



mhdhp86
پنج شنبه 19 مرداد 1391, 18:28 عصر
من یک چنین فرمی دارم:
91000
هنگام ران کردن برنامه بعد از باز کردن این صفحه در ابتدا کلیه tab ها کار می کنند و هیچ مشکلی وجود ندارد. اما اگر روی این کومبوباکس که در تصویر دیده میشود کلیک کنم دیگر هیچ کدام از تب ها باز نمیشوند.دکمه را هم که میزنم هیچ اتفاقی نمی افتد. حتی پنجره اش بسته هم نمیشود!!
کسی می داند دلیلش چیست؟:افسرده:

veniz2008
پنج شنبه 19 مرداد 1391, 18:36 عصر
سلام، اینطوری کسی نمیتونه بهتون کمک کنه. خیلی کلی توضیح دادید. کدی رو که باهاش کمبو رو پر میکیند و همچنین کدی رو که داخل دکمه نوشتید بزارید.

mhdhp86
پنج شنبه 19 مرداد 1391, 18:45 عصر
91004
جدول رو بهصورت ویزارد با دیتاست پر کردم. کد خاصی هم نداره:
if (newhospitaltxt.Text != "")
{


int state = 1;
SqlConnection con = new SqlConnection("Data Source=.\\SQLEXPRESS;AttachDbFilename=C:\\Users\\a dmin\\Documents\\Visual Studio 2010\\Projects\\mastoore\\Nephrology\\Nephrology\\ Nephrology\\nephrology.MDF;Integrated Security=True;Connect Timeout=30;User Instance=True");
SqlDataAdapter ada2 = new SqlDataAdapter();
DataSet ds = new DataSet();
ada2.SelectCommand = new SqlCommand("select * from hospital where hosname=" + newhospitaltxt.Text);
ada2.Fill(ds);
if (ds.Tables[0].Rows.Count >= 1)
{
DialogResult ans;
ans = MessageBox.Show("نام این بیمارستان قبلا وارد شده است.آیا ادامه می دهید؟", "هشدار", MessageBoxButtons.YesNo);
if (ans == DialogResult.No)
{
state = 0;
}
else
state = 1;
}
این اتفاق قبل از زدن دکمه میفته.برای همین ربطی به این نداره که چه کدی براش نوشتم. شاید به همون نحوه پر شدن کومبو بیشتر مرتبط باشه
نمی دونم دیگه چه توضیحی لازمه. بفرمایید تا بگم

veniz2008
پنج شنبه 19 مرداد 1391, 18:55 عصر
دستور select شما ایراد داره، در واقع یک تک کوتیشن نذاشتید . به اینصورت بنویسید:

ada2.SelectCommand = new SqlCommand("select * from hospital where hosname='" + newhospitaltxt.Text +"'");

mhdhp86
پنج شنبه 19 مرداد 1391, 19:03 عصر
شما درست میفرمایید این اشکال به کدم وارده.اما همان طور که گفتم تا وقتی من دکمه رو نزنم اون خط اجرا نمیشه... ربطی به کومبوباکس نداره.

veniz2008
پنج شنبه 19 مرداد 1391, 19:06 عصر
کمبو رو بصورت کدنویسی پر کن ببین بازم مشکل برقراره یا نه. راستی یادم رفت، برای dataadapter هم کانکشن تعریف نکردی. به اینصورت:

ada2.SelectCommand.Connection = con;

mhdhp86
پنج شنبه 19 مرداد 1391, 19:08 عصر
اینطوری نوشتم:
da2.SelectCommand = new SqlCommand("select * from hospital where hosname= '" + newhospitaltxt.Text+"'",con );

حالا بفرمایید در مورد بایندینگ چه اشتباهی داشتم؟

veniz2008
پنج شنبه 19 مرداد 1391, 19:16 عصر
پست 6 رو خوندید؟(فکر کنم همزمان با هم پست زدیم مال من افتاد قبل مال شما ، واسه دیتا آداپتور هم باید کانکشن تعریف کنی ).ببینید مراحل کار شما دو بخشه:
1.پر کردن کمبوباکس ( در واقع بایند کردن جدول به کمبوباکس) : به جای اینکه ویزاردی کمبو رو پر کنی با کد نویسی پر کن.(البته ویزارد هم نباید خطایی داشته باشه، این فقط واسه اطمینان خاطره) اگر روششو نمیدونید بگو تا توضیح بدم.
2. چک کردن اینکه آیا نام بیمارستان تکراری هست یا نه؟( در واقع کدهای درون دکمه). الان کدهای درون دکمه قاعدتا نباید مشکلی داشته باشه. اگر خطایی داره خطا رو ذکر کن.

mhdhp86
پنج شنبه 19 مرداد 1391, 19:20 عصر
پر کردن کومبوباکس بدون ویزارد رو که بلد نیستم!
طبق دسته بندی شما احتمالا در بخش دوم فعلا خطایی ندارم.
مشکلم هم تو پست اول گفتم و هنوز برقراره....

mhdhp86
پنج شنبه 19 مرداد 1391, 19:26 عصر
یک مشکل دیگه هم که دارم و هرچی تو سایت سرچ کردم چیزی پیدا نکردم اینه که نمی دونم چطوری مقادیری که از جدول میگیرم و تو کومبو باکس میریزم رو بر اساس حروف الفبا مرتب کنم.

veniz2008
پنج شنبه 19 مرداد 1391, 19:30 عصر
اول اون کمبو رو حذف کن و دوباره یک کمبوباکس بذار، حالا کمبو رو اینطوری پر کن:
قبلش یه سوال: کانکشن استرینگی که نوشتی درسته؟، یعنی در قسمت های مختلف برنامه با همین کانکشن برنامت جواب میده؟
اما پر کردن کمبوباکس:

SqlConnection con = new SqlConnection("Data Source=.\\SQLEXPRESS;AttachDbFilename=C:\\Users\\a dmin\\Documents\\Visual Studio 2010\\Projects\\mastoore\\Nephrology\\Nephrology\\ Nephrology\\nephrology.MDF;Integrated Security=True;Connect Timeout=30;User Instance=True");
SqlDataAdapter da = new SqlDataAdapter("select * from hospital", con);
DataTable dt = new DataTable();
da.Fill(dt);
comboBox1.DataSource = dt;
comboBox1.DisplayMember = "hosname";

mohammad.ardeshiri
پنج شنبه 19 مرداد 1391, 19:57 عصر
combobox.sorted فک کنم انجام بده اگه نشد جدولتو داخل dataView بریز بعد dataview.sorte="filde morede nazare jadval"
بعد بریز داخل combo

mhdhp86
جمعه 20 مرداد 1391, 16:28 عصر
:
قبلش یه سوال: کانکشن استرینگی که نوشتی درسته؟، یعنی در قسمت های مختلف برنامه با همین کانکشن برنامت جواب میده؟




بله کانکشنم کار می کنه....

mhdhp86
جمعه 20 مرداد 1391, 16:43 عصر
خیلی ممنون....درست شد.... چرا با ویزارد به اون مشکل بر خوردم؟

mhdhp86
جمعه 20 مرداد 1391, 16:47 عصر
combobox.sorted فک کنم انجام بده اگه نشد جدولتو داخل dataView بریز بعد dataview.sorte="filde morede nazare jadval"
بعد بریز داخل combo

ازcombo.sorted چه طور باید استفاده کنم؟ همین طوری می نویسم ارور میده.