Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.04.2013, 16:26   #1
wm_leviathan
Форумчанин
 
Аватар для wm_leviathan
 
Регистрация: 17.02.2010
Сообщений: 399
По умолчанию Как получить текст нулевого элемента ComboBox

Добрый день. необходимо сравнить текст ComboBox'са с TextBox'ом и если совпадают то выставить в КБ текущий индек совпавшей строки.
Код:
for (int i = 0; i < ((frmIndCard)Application.OpenForms["frmIndCard"]).cbGilFond.Items.Count; i++)
                        {
                                                        ((frmIndCard)Application.OpenForms["frmIndCard"]).cbGilFond.SelectedIndex = i;

                            if (((frmIndCard)Application.OpenForms["frmIndCard"]).cbGilFond.Text == ((frmIndCard)Application.OpenForms["frmIndCard"]).txtKodGilfond.Text)
                            {
                                ((frmIndCard)Application.OpenForms["frmIndCard"]).cbGilFond.SelectedIndex = i;
                                return;
                            }
но тут такая беда, при i = 0 вместо текста в КБ показывает "System.Data.DataRowView", хотя на 0-ой позиции точно есть текст.
как считать текст с 0-ой позиции ?
wm_leviathan вне форума Ответить с цитированием
Старый 20.04.2013, 18:02   #2
wm_leviathan
Форумчанин
 
Аватар для wm_leviathan
 
Регистрация: 17.02.2010
Сообщений: 399
По умолчанию

ну собственно получилось выдернуть текст нулевого элемента КБ
Код:
string str = Convert.ToString(((System.Data.DataRowView)((frmIndCard)Application.OpenForms["frmIndCard"]).cbGilFond.Items[0]).Row["NameGilfond"]);
но это уродство какое то, через конверты...
есть ли вариант получше ? или почему текст нулевого элемента не отображается?
wm_leviathan вне форума Ответить с цитированием
Старый 20.04.2013, 19:35   #3
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

как биндятся ровы к итемсам?
eval вне форума Ответить с цитированием
Старый 20.04.2013, 19:49   #4
wm_leviathan
Форумчанин
 
Аватар для wm_leviathan
 
Регистрация: 17.02.2010
Сообщений: 399
По умолчанию

так заполняю КБ:
Код:
public void LoadCombo(string sqlQueryString, ComboBox comboControl, string cbColName)
        {
            ConnectionClass conn = new ConnectionClass();
            using (SqlDataAdapter dataAdapter = new SqlDataAdapter(sqlQueryString, conn.connectionString))
            {
                DataTable table = new DataTable();
                table.Locale = System.Globalization.CultureInfo.InvariantCulture;
                dataAdapter.Fill(table);
                comboControl.DataSource = table;
                comboControl.DisplayMember = table.Columns[cbColName].ColumnName;
            }
 
        }
потом
собственно получилось нулевой элемент выдернуть:
Код:
string str = Convert.ToString(((System.Data.DataRowView)((frmIndCard)Application.OpenForms["frmIndCard"]).cbGilFond.Items[0]).Row["NameGilfond"]);
но это уродство
причем если добавлять в КБ итемы "ручками" то спокойно можно нулевой элемент считывать.
ЗЫ то что в table нет пустых строк я уверен.
wm_leviathan вне форума Ответить с цитированием
Старый 20.04.2013, 22:21   #5
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

у комбобокса есть свойство SelectedItem
а ваши пляски вокруг Application.OpenForms я так и не понял..
eval вне форума Ответить с цитированием
Старый 20.04.2013, 22:59   #6
wm_leviathan
Форумчанин
 
Аватар для wm_leviathan
 
Регистрация: 17.02.2010
Сообщений: 399
По умолчанию

Цитата:
Сообщение от eval Посмотреть сообщение
у комбобокса есть свойство SelectedItem
да так можно так сделать, но тут ошибку нашел: после for строка ((frmIndCard)Application.OpenForms["frmIndCard"]).cbGilFond.SelectedIndex = i; не нужна ибо она меняет txtKodGilfond.Text т.к. у комбобокса cbGilFond на событии SelectedIndexChanged стоит функция которая пишет код в txtKodGilfond взависимости от выбранного значения комбобокса.
на текущий момент сделал так:
Код:
for (int i = 0; i < ((frmIndCard)Application.OpenForms["frmIndCard"]).cbGilFond.Items.Count; i++)
                        {
                            //((frmIndCard)Application.OpenForms["frmIndCard"]).cbGilFond.SelectedIndex = i;

                            if (Convert.ToString(((System.Data.DataRowView)((frmIndCard)Application.OpenForms["frmIndCard"]).cbGilFond.Items[i]).Row["NameGilfond"]).IndexOf(((frmIndCard)Application.OpenForms["frmIndCard"]).txtKodGilfond.Text) > -1)
                            {
                                ((frmIndCard)Application.OpenForms["frmIndCard"]).cbGilFond.SelectedIndex = i;
                                break;
                            }
                        }
все хорошо работает, но Convert не радует глаз
Цитата:
а ваши пляски вокруг Application.OpenForms я так и не понял..
Пляски затем, что это вырезка из функции которая валяется в отдельном файле.
Код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.Sql;
using System.Data.SqlClient;
using System.Windows.Forms;
using System.Data.OleDb;
using System.Data;
using System.Drawing;
 
namespace Esrn
{
    class ImushestvoClass
    {
        #region (LoadImush) Функция загрузки данных об имуществе
        public void LoadImush(string Kodind)
        {
            DopFuncClass DopFunc = new DopFuncClass();
            ConnectionClass conn = new ConnectionClass();
...
for (int i = 0; i < ((frmIndCard)Application.OpenForms["frmIndCard"]).cbGilFond.Items.Count; i++)
...
не люблю писать много кода в файлах формы. предпочитаю описать функции в других классах и дергать их потом оттуда. на каждое дело свой класс. Класс поиска, класс имущества, класс семьи. Логические ошибки потом проще искать.
а то как то на билдере 6м нахерачил я под тысячу строк на форме, попалась логическая ошибка недели 3 не мог ее отыскать плюнул и сделал шивт+делет ))))
wm_leviathan вне форума Ответить с цитированием
Старый 20.04.2013, 23:40   #7
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

етить в бубен бить......
вы про такое хорошее слово как partial никогда не слышали? оно спасает от "шивт+делет" и проч неприятности.
eval вне форума Ответить с цитированием
Старый 20.04.2013, 23:42   #8
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

а еще прочитайте про биндингсоурсы и куренсиманагеры
eval вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Определить колличество строк прямоугольной матрицы, не содержащих ни одного нулевого элемента Placebo228 Общие вопросы C/C++ 2 06.11.2012 22:18
количество строк, в которых нет ни одного нулевого элемента в матрице Sylar9 Общие вопросы C/C++ 3 24.12.2011 15:50
Нахождение нулевого элемента итерационным методом Namyola Помощь студентам 2 07.06.2011 13:08
определить количество столбцов, не содержащих ни одного нулевого элемента Larka12 Помощь студентам 1 07.02.2011 20:52
Си -Расположить элементы в порядке возрастания от первого нулевого элемента до отрицательного элемента Freia Помощь студентам 17 13.12.2009 15:41