Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка Windows Forms > HELP - DataGridView


Автор: as90 30.5.2010, 12:06
Всем привет!
Возникла небольшая проблема с DataGridView...
Есть DataGridView, которая отображает SQL - таблицу:
user posted image
Как сделать чтоб я, например в comboBox выбрал имя, и в DataGridView отобразилась не вся таблица ,а только те строки где имя соответствует значению  comboBox
(SQL-запрос я уже написал, но не знаю как его применить к DataGridView) smile  smile 

Помогите пожалуйста!!!!!

Автор: AntonX 30.5.2010, 16:16
Самый простой способ - использовать BindingSource в качестве DataSource таблицы.

Код

// инициализация
            BindingSource bindingSource = new BindingSource();
            bindingSource.DataSource = /// здесь указываем источник данных
            dataGridView1.DataSource = bindingSource;

все это можно и с редактора настроить



Код

// использование
 bindingSource.Filter = "Name = "+comboBox1.Text;

           

явные плюсы от BindingSource -  удобная организация навигации и связывания

Автор: as90 30.5.2010, 18:00
Большое спасибо!!!
Сдвинулся с мертвой точки))) smile 
Возник вопрос с фильтром:
В таблице которую мне надо вывести значения, Type в виде ключей, а мне именно по этому полю надо фильтровать...
Значения этих ключей находятся в другой таблице, я написал SQL - запрос:
Код

string cnstr = @"Initial Catalog=COMP2010;Data Source=COMP;User ID=sa;Password=1";
            SqlConnection con = new SqlConnection(cnstr);
            con.Open();
            SqlCommand cmd2 = new SqlCommand("select id from tbl_Type where Name=' "+comboBox.SelectedItem.ToString()+" ' ", con);

Этот запрос достает id типа и сравнивает с полем Type.

Вопрос, как полученное значение из SQL - запроса сравнить с фильтром????  
(пробовал   bindingSource.Filter = "Type = " + cmd2;   но выдает ошибку)

Автор: VirusUZ 3.7.2010, 14:06
Код

public static DataTable GetDataTable(SqlCommand cmd)
    {
        DataTable dt = new DataTable();
        using (SqlConnection cn = new SqlConnection(con_str()))
        {
            cmd.Connection = cn;
            SqlDataAdapter sda = new SqlDataAdapter(cmd);
            sda.Fill(dt);
        }
        return dt;
    }


OR


Код

public static DataTable GetDataTable(string query)
    {
        DataTable dt = new DataTable();
        SqlDataAdapter sda = new SqlDataAdapter(query,con_str());
            sda.Fill(dt);
              return dt;
    }


***********************

Код

public static string con_str()
    { return "Data Source=jalol;Initial Catalog=abc;User ID=uid;Password=pwd"; }


*****************************

Код

public static void executeCommand(SqlCommand cmd)
    {
        using (SqlConnection cn = new SqlConnection(con_str()))
        {
            try
            {
                if (cn.State != ConnectionState.Open)
                {
                    cn.Open();
                }
                cmd.Connection = cn;
                cmd.ExecuteNonQuery();
            }
            catch (Exception e) { string s = e.ToString(); }
        }
    }


 smile 

Код


string keyword="...";
datagridview1.datasource=GetDataTable("select * from tname where ism like '%"+keyword+"%'");

datagridview1.Databind();  // для ASP.NET
Databind();                         // для ASP.NET


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)