Всем привет!
Вообщем тема такая :
есть comboBox и я указываю в свойсвах DataSource подключить
DataSet с данными по столбцу A, например.
Теперь в comboBox1.Items — появились данные из БД и
по умочанию начальное состояние, т.е comboBox1.Text равно
первому элементу из списка
Допустим, мне надо проверить пустое поле Text или нет —
естественно нет, но я в проге пишу comboBox1.Text="";
ОПА, визуально поменял
теперь пишу if (comboBox1.Text=="" то....
!!! но не проходит !!! ВИЗУАЛЬНО -пуст
НО ЗНАЧЕНИЕ — прежнее
Вот если я в ручную ткну туда и что-либо напишу- то все в порядке, все поманяется...
Вот такая проюлема — подскажите как её решить-то!!!!!
Заранее спасибо!
Как мне
Здравствуйте, ironblade, Вы писали:
I>Всем привет! I>Вообщем тема такая : I>есть comboBox и я указываю в свойсвах DataSource подключить I>DataSet с данными по столбцу A, например. I>Теперь в comboBox1.Items — появились данные из БД и I>по умочанию начальное состояние, т.е comboBox1.Text равно I>первому элементу из списка I>Допустим, мне надо проверить пустое поле Text или нет — I>естественно нет, но я в проге пишу comboBox1.Text=""; I>ОПА, визуально поменял I>теперь пишу if (comboBox1.Text=="" то.... I>!!! но не проходит !!! ВИЗУАЛЬНО -пуст I>НО ЗНАЧЕНИЕ — прежнее I>Вот если я в ручную ткну туда и что-либо напишу- то все в порядке, все поманяется... I>Вот такая проюлема — подскажите как её решить-то!!!!! I>Заранее спасибо!
Свойство Text не относиться (напрямую) к модели DataBinding, т.е. через него нельзя изменять или навигациировать по DataSet-е. Попробуй переделать свою модель так что она работа через свойство (SelectedValue).
А изменилось св-во текст потомучто при редактировании вызвалось сообщение WM_TEXTCHANGE — которое завязано на GUI а не на св-ве Text.
Здравствуйте, ironblade, Вы писали:
I>Всем привет! I>Вообщем тема такая : I>есть comboBox и я указываю в свойсвах DataSource подключить I>DataSet с данными по столбцу A, например. I>Теперь в comboBox1.Items — появились данные из БД и I>по умочанию начальное состояние, т.е comboBox1.Text равно I>первому элементу из списка I>Допустим, мне надо проверить пустое поле Text или нет — I>естественно нет, но я в проге пишу comboBox1.Text=""; I>ОПА, визуально поменял I>теперь пишу if (comboBox1.Text=="" то.... I>!!! но не проходит !!! ВИЗУАЛЬНО -пуст I>НО ЗНАЧЕНИЕ — прежнее I>Вот если я в ручную ткну туда и что-либо напишу- то все в порядке, все поманяется... I>Вот такая проюлема — подскажите как её решить-то!!!!! I>Заранее спасибо! I>Как мне
Обычно я изпользую в таких случаях DataBinding. Для ComboBox'а нужно задать свойства SelectedValue, DisplayMember.
В SelectedValue — идентификатор, в DisplayMember — текст.
В качестве источника к ComboBox'у можно использовать DataView, если требуется сортировка или фильтрация.
Каждый человек стоит столько, сколько стоит то, о чем он хлопочет.(с) Народная мудрость.
Re: есть вопрос!!!!!
От:
Аноним
Дата:
13.02.05 11:59
Оценка:
а можно еще попробовать не через Text, а через Item или Value.
есть вопрос!!!!!
От:
Аноним
Дата:
12.02.05 21:43
Оценка:
>Допустим, мне надо проверить пустое поле Text или нет — ...
— if (comboBox1.Text.Trim=="" ...
>НО ЗНАЧЕНИЕ — прежнее...
— Конечно прежднее, а что ты хотел? Ставь режим DropDown, или обрабатывай KeyUp (имхо)...
>Свойство Text не относиться (напрямую) к модели DataBinding, т.е. через него нельзя изменять или навигациировать по DataSet-е.
Это свойство напрямую относится DataBinding, все зависит от того, как именно устанавливается binding и в каком режиме (DropDownStyle) находится ComboBox:
using System;
using System.Windows.Forms;
using System.Data;
class MyForm: Form
{
const string TABLE_CITY = "city";
const string COL_CITY_ID = "id";
const string COL_CITY_NAME = "name";
public MyForm()
{
DataTable sourceTable = CreateDataTable();
DataGrid dgDemo = new DataGrid();
dgDemo.DataSource = sourceTable;
dgDemo.Height = ClientRectangle.Height / 2;
dgDemo.Dock = DockStyle.Top;
ComboBox cbDemo = new ComboBox();
cbDemo.DataBindings.Add("Text", sourceTable, COL_CITY_NAME);
cbDemo.Items.AddRange(new object[]{"one", "two", "three"});
cbDemo.Top = dgDemo.Bottom;
Controls.AddRange(new Control[]{dgDemo, cbDemo});
}
DataTable CreateDataTable()
{
DataTable tableCity = new DataTable(TABLE_CITY);
tableCity.Columns.AddRange(new DataColumn[]{new DataColumn(COL_CITY_ID, typeof(int)),
new DataColumn(COL_CITY_NAME)});
tableCity.Rows.Add(new object[]{0, "My City"});
tableCity.Rows.Add(new object[]{1, "Your City"});
return tableCity;
}
static void Main()
{
Application.Run(new MyForm());
}
}