PDA

View Full Version : سوال: درخواست راهنمایی برای استفاده از کمبو باکس در گرید ویو



hamid_0341
شنبه 16 شهریور 1392, 12:21 عصر
چجوری یک ایتم کمبوباکس داخل گرید ویو رو اینجوری کنم ؟؟
http://8pic.ir/images/32591251972060602321.png

این کدشو پیدا کردم !!

private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{


if (e.Control is DataGridViewComboBoxEditingControl)
{
((ComboBox)e.Control).DropDownStyle = ComboBoxStyle.DropDown;
((ComboBox)e.Control).AutoCompleteSource = AutoCompleteSource.ListItems;
((ComboBox)e.Control).AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.Suggest;

}
e.CellStyle.BackColor = Color.Khaki;
}





ولی توی این کد اگه کاربر کلمه ای وارد کنه که توی آیتم های لیست ویو نباشه اجازه اضافه شدن بهش نمیده !! من میخوام اگه توی ایتم های کمبوباکس بود اضافه شه اگه نبود اجازه بده کاربر بتونه هر کلمه ای که دوس داره ادد کنه ! چجوری این کار بکنم ؟؟؟؟

hamid_0341
شنبه 16 شهریور 1392, 12:26 عصر
آقای خوخان تا جایی بهم راهمایی کردن ، گفتن باید از تکست باکس استفاده کنم که autoComplete باشه ! ولی 2 تا سوال !
1. تو کدوم قسمت textbox گرید ویو AutoComplete داره !؟
2. باید تکست باکسمو به یک لیست وصل کنم ؟!

hamid_0341
شنبه 16 شهریور 1392, 12:52 عصر
کسی نظری نداره ؟!

khokhan
شنبه 16 شهریور 1392, 13:23 عصر
کسی نظری نداره ؟!
با سلام
این نمونه رو به عنوان دست گرمی :لبخند: و علی الحساب داشته باش تا با نحوه کار آشنا بشی !! اگه لازم بود با گرید متصل به بانک هم توضیح می دم چکار کنی
در این نمونه من توی گرید دو تا ستون ایجاد کردم یکی برای شماره و یکی برای نام "Name" هر دو تا ستون از نوع تکست باکس باکس می باشند و ستون Name بصورت auto complate می باشد یعنی کافی است تا در این ستون حرف انگلیسی N رو تایپ کنید تا لیستی که از طرق کد نویسی تغذیه می شه براتون نمایش داده بشه و درصورتی که گزینه مورد نظرتون در لیست نباشه می تونین به تایپ کردن ادامه بدین ........:لبخند::لبخند::لبخند:
کدها خودشون گویا هستند باز اگه لازم بود بگین توضیح بدم

hamid_0341
شنبه 16 شهریور 1392, 13:35 عصر
با سلام
این نمونه رو به عنوان دست گرمی :لبخند: و علی الحساب داشته باش تا با نحوه کار آشنا بشی !! اگه لازم بود با گرید متصل به بانک هم توضیح می دم چکار کنی
در این نمونه من توی گرید دو تا ستون ایجاد کردم یکی برای شماره و یکی برای نام "Name" هر دو تا ستون از نوع تکست باکس باکس می باشند و ستون Name بصورت auto complate می باشد یعنی کافی است تا در این ستون حرف انگلیسی N رو تایپ کنید تا لیستی که از طرق کد نویسی تغذیه می شه براتون نمایش داده بشه و درصورتی که گزینه مورد نظرتون در لیست نباشه می تونین به تایپ کردن ادامه بدین ........:لبخند::لبخند::لبخند:
کدها خودشون گویا هستند باز اگه لازم بود بگین توضیح بدم

آقا واقعا دستت دردنکنه وقت گزاشتی ! :خجالت::قلب:
کارت خیلی درسته ! :خجالت:

shahin60
شنبه 16 شهریور 1392, 13:52 عصر
با سلام
این نمونه رو به عنوان دست گرمی :لبخند: و علی الحساب داشته باش تا با نحوه کار آشنا بشی !! اگه لازم بود با گرید متصل به بانک هم توضیح می دم چکار کنی
در این نمونه من توی گرید دو تا ستون ایجاد کردم یکی برای شماره و یکی برای نام "Name" هر دو تا ستون از نوع تکست باکس باکس می باشند و ستون Name بصورت auto complate می باشد یعنی کافی است تا در این ستون حرف انگلیسی N رو تایپ کنید تا لیستی که از طرق کد نویسی تغذیه می شه براتون نمایش داده بشه و درصورتی که گزینه مورد نظرتون در لیست نباشه می تونین به تایپ کردن ادامه بدین ........:لبخند::لبخند::لبخند:
کدها خودشون گویا هستند باز اگه لازم بود بگین توضیح بدم

کمبو باکس متصل به بانک تو گرید تو ضیح می دید؟

hamid_0341
شنبه 16 شهریور 1392, 14:30 عصر
کمبو باکس متصل به بانک تو گرید تو ضیح می دید؟
کمبو باکس که خودم کدشو گزاشتم پست اول
فقط باید item های کمبوباکستو پر کنی خودش دیگه اینجوری میشه !!
اگه میخوای با این کد آقای خوخانم به بانک وصل کنی !! کد که واضحه فقط Str با item های توی بانکت پر کن !! مثلا من اینجوری پُرش کردم

public AutoCompleteStringCollection AutoKindCode()
{
AutoCompleteStringCollection str = new AutoCompleteStringCollection();
Linq.DataClasses1DataContext db = new Linq.DataClasses1DataContext();
var query = from qry in db.Anbar_tbls
where qry.Kind == dataGridView1.CurrentRow.Cells["Column4"].Value.ToString()
select qry;
if (query.Count() > 0)
{
foreach (var item in query)
{
str.Add(item.KindCode);
}
}
return str;
}

hamid_0341
یک شنبه 17 شهریور 1392, 07:38 صبح
آقای خوخان این مشکل از کجاست ؟
وقتی توی یک سلول این کار انجام میدیم از اون سلول به بعد همه ی سلول ها این آیتم ها توش هستند و AutoComplete هستن توی پروژه خودتون هم یک Column اضافه کردم همینجوری شد !! پروژه خودتونم گزاشتم یه نگاهی میندازین مشکل از کجاست ؟!!
این کد خودمه !!
if (dataGridView1.CurrentCell.ColumnIndex == 3)
{
int column1 = dataGridView1.CurrentCell.ColumnIndex;
string HeaderText1 = dataGridView1.Columns[column1].HeaderText;
if (HeaderText1 == "کد نوع")
{
TextBox tb = e.Control as TextBox;
if (tb != null)
{
tb.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
tb.AutoCompleteCustomSource = AutoKindCode();
tb.AutoCompleteSource = AutoCompleteSource.CustomSource;
}
}

}




110297

110298

khokhan
یک شنبه 17 شهریور 1392, 13:01 عصر
آقای خوخان این مشکل از کجاست ؟
وقتی توی یک سلول این کار انجام میدیم از اون سلول به بعد همه ی سلول ها این آیتم ها توش هستند و AutoComplete هستن توی پروژه خودتون هم یک Column اضافه کردم همینجوری شد !! پروژه خودتونم گزاشتم یه نگاهی میندازین مشکل از کجاست ؟!!
این کد خودمه !!
if (dataGridView1.CurrentCell.ColumnIndex == 3)
{
int column1 = dataGridView1.CurrentCell.ColumnIndex;
string HeaderText1 = dataGridView1.Columns[column1].HeaderText;
if (HeaderText1 == "کد نوع")
{
TextBox tb = e.Control as TextBox;
if (tb != null)
{
tb.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
tb.AutoCompleteCustomSource = AutoKindCode();
tb.AutoCompleteSource = AutoCompleteSource.CustomSource;
}
}

}




110297

110298

احتمالا مشکل از ویژوال شما بایستی باشه
پروژه دقیقا کار می کنه و موردی رو که شما اشاره کردین اتفاق نیافتاد

اینه ها :لبخند::لبخند::لبخند::لبخند:
110309

hamid_0341
یک شنبه 17 شهریور 1392, 13:25 عصر
نه آقای خوخان
من میخواستم فقط توی Column با هدر Name اضافه بشن ولی از اون Column که هدر Name داره به بعد همه کالم ها خواصیت AutoComplete داره اگه 100 تا کالم هم به این برنامه اضافه کنین میبینین از Name به بعد همشون خواصیت AutoComplete دارن !! :لبخند::لبخند::لبخند::لبخند: البته من از اون کالم به بعد AutoComplete شون رو خالی گزاشتم دیگه نیاد !! ولی راهی نباید داشته باشه ؟

khokhan
یک شنبه 17 شهریور 1392, 14:05 عصر
نه آقای خوخان
من میخواستم فقط توی Column با هدر Name اضافه بشن ولی از اون Column که هدر Name داره به بعد همه کالم ها خواصیت AutoComplete داره اگه 100 تا کالم هم به این برنامه اضافه کنین میبینین از Name به بعد همشون خواصیت AutoComplete دارن !! :لبخند::لبخند::لبخند::لبخند: البته من از اون کالم به بعد AutoComplete شون رو خالی گزاشتم دیگه نیاد !! ولی راهی نباید داشته باشه ؟
آهان !!!!!!!!!!!!!!!! از اون لحاظ :لبخند::بامزه:
بیا درست شد فقط کافیه در یکی از سلولهای ستون "عنوان" از حروف فارسی یکی رو بنویسی و نتیجه رو ببینی مخصوصا حرف "ش":لبخند:

hamid_0341
یک شنبه 17 شهریور 1392, 14:12 عصر
آهان !!!!!!!!!!!!!!!! از اون لحاظ :لبخند::بامزه:
بیا درست شد فقط کافیه در یکی از سلولهای ستون "عنوان" از حروف فارسی یکی رو بنویسی و نتیجه رو ببینی مخصوصا حرف "ش":لبخند:
بله درست شد دست شما درد نکنه !!
:لبخند:

hamid_0341
یک شنبه 17 شهریور 1392, 14:14 عصر
چجوری جلوگیری کنم از اضافه شدن تکراری توی Item های کمبو باکس !!؟

khokhan
یک شنبه 17 شهریور 1392, 14:59 عصر
آقای خوخان تا اینجا هستین یه سوال دیگه هم بپرسم !! :لبخند::لبخند::لبخند:
چجوری جلوگیری کنم از اضافه شدن تکراری توی Item های کمبو باکس !!؟
خوب اگه لیست رو به شیوه کدنویسی اضافه کنی که دست خودتونه
واگه لیست به بانک متصل هست کوری رو به شیوه Distinct اجرا کنین تا گزینه ها تکراری نباشند :


var result = table1.Join(table2, o => o.ProgramID, t => t.ProgramID, (o, t) => new { o.ProgramID, t.Program })
.OrderBy(t => t.Program)
.Distinct();