PDA

View Full Version : حرفه ای: عدم نمایش پیشفرض در لیست باکس



cisco ++
چهارشنبه 24 مهر 1392, 22:05 عصر
سلام
وقتی یه لیست باکس محتواش رو از پایگاه داده میگیره ، میدونید چطور میشه کاری کرد که بصورت پیش فرض اولین گزینه اش انتخاب نشده باشه تا خودمون با ماوس انتخاب کنیم؟

mam_65
چهارشنبه 24 مهر 1392, 23:55 عصر
سلام
وقتی یه لیست باکس محتواش رو از پایگاه داده میگیره ، میدونید چطور میشه کاری کرد که بصورت پیش فرض اولین گزینه اش انتخاب نشده باشه تا خودمون با ماوس انتخاب کنیم؟
myListBox.SelectedIndex = -1;

mhsmity
پنج شنبه 25 مهر 1392, 00:19 صبح
سلام من خودم همین مشکل رو داشتم.
یعنی لیست باکس من باید آیتم هاش ترتیب خاصی داشته باشه.
اولین مقدار لیست تهی باشه
سومین مقدار یک عدد باشه
و اخرین مقدار آدرس یک عکس باشه.

شما از طریق کد نویس این کار ور انجام بده .
یه لیست طبق نظر خود بساز و لیست بکست رو طبق کد زیر مقدار دهی کن

List<string> l2 = new List<string>();
foreach (string str in l.ToArray().Distinct())
{
l2.Add(str);
}
Cbx.DataSource = l2;
کد بالا رو واسه نمونه برات گذاشتم.

cisco ++
پنج شنبه 25 مهر 1392, 14:20 عصر
myListBox.SelectedIndex = -1;

جواب نداد دوست عزیز

cisco ++
پنج شنبه 25 مهر 1392, 14:26 عصر
سلام من خودم همین مشکل رو داشتم.
یعنی لیست باکس من باید آیتم هاش ترتیب خاصی داشته باشه.
اولین مقدار لیست تهی باشه
سومین مقدار یک عدد باشه
و اخرین مقدار آدرس یک عکس باشه.

شما از طریق کد نویس این کار ور انجام بده .
یه لیست طبق نظر خود بساز و لیست بکست رو طبق کد زیر مقدار دهی کن

List<string> l2 = new List<string>();
foreach (string str in l.ToArray().Distinct())
{
l2.Add(str);
}
Cbx.DataSource = l2;
کد بالا رو واسه نمونه برات گذاشتم.

آخه من این لیست باکسی که میگم از بانک تغذیه میشه و حتما باید وصل به بانک باشه بخاطر عملیات بعدی مربوط به این جدول
این که شما میگید از بانک نیست

veniz2008
پنج شنبه 25 مهر 1392, 16:43 عصر
سلام.
کدی که دوستمون در پست 2 گذاشتن درسته و آیتم اول رو از حالت انتخاب خارج میکنه. همچنین می تونید از کد زیر هم استفاده کنید :

listBox1.SetSelected(0, false);
اگر منظور دیگه ای از انتخاب نشدن آیتم اول دارید یا بیشتر توضیح بدید یا یه شکل بذارید و بگید منظورتون چیه.

cisco ++
پنج شنبه 25 مهر 1392, 20:14 عصر
سلام.
کدی که دوستمون در پست 2 گذاشتن درسته و آیتم اول رو از حالت انتخاب خارج میکنه. همچنین می تونید از کد زیر هم استفاده کنید :

listBox1.SetSelected(0, false);
اگر منظور دیگه ای از انتخاب نشدن آیتم اول دارید یا بیشتر توضیح بدید یا یه شکل بذارید و بگید منظورتون چیه.

بله اون کد درسته و باعث میشه گزینه اول انتخاب نشده باشه ولی وقتی مقدارش رو میخوام بعد از انتخاب، ثبت کنم در بانک ،به جاش system.row ذخیره میشه در رکورد مربوطه

veniz2008
پنج شنبه 25 مهر 1392, 20:39 عصر
بله اون کد درسته و باعث میشه گزینه اول انتخاب نشده باشه ولی وقتی مقدارش رو میخوام بعد از انتخاب، ثبت کنم در بانک ،به جاش system.row ذخیره میشه در رکورد مربوطه
با این سبک توضیحات تا 15 پست دیگه هم به جواب نمی رسیم.
شما باید بصورت کامل بگی هدفت چیه.
جدول شما که می ریزش تو لیست باکس به چه صورت هست؟ داده هاش چیه؟
هدفت اینه که چه چیزی رو درج کنی؟
کدی رو که نوشتی و باهاش لیست باکس رو پر میکنی و همچنین کد درج اطلاعات رو بذار.
کامل توضیح بده تا بتونیم بهتر کمک کنیم.

mhsmity
جمعه 26 مهر 1392, 02:02 صبح
آخه من این لیست باکسی که میگم از بانک تغذیه میشه و حتما باید وصل به بانک باشه بخاطر عملیات بعدی مربوط به این جدول
این که شما میگید از بانک نیست

خوب می دونم شما باید هر دفعه لیست جدید خودت رو بسازی
foreach (DataRow r in dt1.Rows)
{
string str = r["name"].ToString();
if (str != "")
l.Add(str);
}

یک دیتا تیبل بساز مقادیر مورد نظر رو طبق نظر خودت داخل لیست بریز و بعد لیست رو داخل لیست باکس خودتون به همین سادگی

cisco ++
شنبه 27 مهر 1392, 11:10 صبح
با این سبک توضیحات تا 15 پست دیگه هم به جواب نمی رسیم.
شما باید بصورت کامل بگی هدفت چیه.
جدول شما که می ریزش تو لیست باکس به چه صورت هست؟ داده هاش چیه؟
هدفت اینه که چه چیزی رو درج کنی؟
کدی رو که نوشتی و باهاش لیست باکس رو پر میکنی و همچنین کد درج اطلاعات رو بذار.
کامل توضیح بده تا بتونیم بهتر کمک کنیم.

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


SqlCommand cmd2 = new SqlCommand("SELECT * from tblDrGp", objcon);
SqlDataReader dr2 = cmd2.ExecuteReader();
DataTable dt2 = new DataTable();
dt2.Load(dr2);
listBox2.SelectedIndex = -1;
listBox2 . DataSource = dt2;
listBox2.DisplayMember = "DrLastName";
listBox2.ValueMember = "DrLastName";

که به صورت پیش فرض وقتی فرم لود میشه ، اولین مقدار جدول(اسم یکی از پزشکان) انتخاب شده هست . خوب ؟ حالا چون این فرم برای ثبت خدمات پرستاری در کلینیک هستش، گاهی امکان داره نیاز به ثبت نام پزشک در جدول فاکتور نباشه ولی چون مقدار پیش فرض لیست باکس همیشه انتخاب شده هست ، اسم اولین پزشک از لیست همیشه در جدول ثبت میشه .و وقتی هم این کد رو مینویسم :


listBox2.SelectedIndex = -1;
، بعد از عمل ثبت در جدول فاکتور به جای نام پزشک عبارت system.data.row میندازه !
من میخوام وقتی نیاز به انتخاب نام پزشک از لیست نیست ، در جدول فاکتور خالی بمونه اون فیلد .
تونستم بگم ؟

veniz2008
شنبه 27 مهر 1392, 17:12 عصر
با یک if ساده قبل از درج رکورد چک کن که آیا selectedindex برابر 1- هست یا که نه. اگر نبود یعنی آیتمی انتخاب شده، پس مقدار رو از لیست باکس میخونی و درج میکنی. این کد رو دقت کن :

SqlConnection con = new SqlConnection("server = .\\md2012;DataBase = DBTest3;Integrated Security = True");
SqlCommand cmd = new SqlCommand("Insert Into TblStudent(StdName,StdFamily,StdGender,StdBirthDay ,StdAge) values(@stdname,@stdfamily,@stdgender,@stdbirthday ,@stdage)", con);
cmd.Parameters.AddWithValue("@stdname", TxtStdName.Text.Trim());
cmd.Parameters.AddWithValue("@stdfamily", TxtStdFamily.Text.Trim());
cmd.Parameters.AddWithValue("@stdgender", CmbGender.SelectedIndex);
cmd.Parameters.AddWithValue("@stdbirthday", TxtBirthDay.Text.Trim());
if (listBox1.SelectedIndex != -1)
{
cmd.Parameters.AddWithValue("@stdage", TxtAge.Text.Trim());
}
else
{
cmd.Parameters.AddWithValue("@stdage", DBNull.Value);
}
con.Open();
cmd.ExecuteNonQuery();
con.Close();
MessageBox.Show("رکورد مورد نظر با موفقیت ثبت گردید");

cisco ++
دوشنبه 29 مهر 1392, 08:25 صبح
متشکرم veniz2008 ازتون
راهنمایی تون کمکم کرد. حل شد