У меня есть combobox, который извлекает данные из select и datagridview, которые извлекают данные из другого запроса. Я хотел бы отфильтровать datagridview, используя значение combobox. Я стараюсь все, но ничего не работает. Не могли бы вы помочь? Более того, почему, когда я объявляю dataview = ((DataTable) datagridview.datasource.defaultview (первая строка в combobox_SelectedIndexChanged), я больше не вижу никаких значений в combobox, вместо этого я вижу System Data DataRowView, но первый вопрос для меня важнее .C# Combobox и DataGridView
private void Form5_Load(object sender, EventArgs e)
{
SqlConnection conn = new SqlConnection(@"Data Source=xxxxx;Initial Catalog=xxxxx;Integrated Security=True;");
conn.Open();
SqlCommand sc = new SqlCommand(" SELECT id, customername+' - '+cast(inserted as varchar(19)) as targ FROM bf where customername>'a' order by customername asc, inserted desc ", conn);
SqlDataReader reader;
reader = sc.ExecuteReader();
DataTable dt = new DataTable();
dt.Columns.Add("id", typeof(string));
dt.Columns.Add("targ", typeof(string));
dt.Load(reader);
comboBox1.ValueMember = "id";
comboBox1.DisplayMember = "targ";
comboBox1.DataSource = dt;
conn.Close();
var select = "SELECT [id],[CustomerName[email],[Capital] FROM baf order by id desc";
var c = new SqlConnection("Data Source=xxxxxx;Initial Catalog=xxxxx;Integrated Security=True;"); // Your Connection String here
var dataAdapter = new SqlDataAdapter(select, c);
var commandBuilder = new SqlCommandBuilder(dataAdapter);
var ds = new DataSet();
dataAdapter.Fill(ds);
dataGridView1.ReadOnly = true;
dataGridView1.DataSource = ds.Tables[0];
}
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
//var dataView = ((DataTable)dataGridView1.DataSource).DefaultView;
// if (comboBox1.Text == "Remove filter")
// {
// dataView.RowFilter = string.Empty;
// }
// else
// {
// //dataView.RowFilter = "id = {comboBox1.Text}";
// }
//}
}
Пытаясь таким образом: частная пустота comboBox1_SelectedIndexChanged (объект отправителя, EventArgs е) { DataView DV = dataGridView1.DataSource в DataView; dv.RowFilter = "id = [ComboBox1.Text]"; дайте мне ошибку. Ссылка на объект не установлена в экземпляр объекта. И показывает System Data DataRowView в combobox – Diegoctn
Если вы пытаетесь использовать строчную интерполяцию на RowFilter, вам нужно добавить знак доллара: '$ 'id = {comboBox1.Text}" ' Однако вы, вероятно, должны использовать' SelectedValue' , а не 'Текст'. – Crowcoder
private void comboBox1_SelectedIndexChanged var dataView = ((DataTable) dataGridView1.DataSource) .DefaultView; if (comboBox1.Text == "Удалить фильтр") { dataView.RowFilter = string.Empty; } else { dataView.RowFilter = $ "id = {comboBox1.SelectedValue}"; } } Ошибка непредвиденного символа, плюс только вызов назначения, приращение, декремент и новый объект могут использоваться как оператор, недопустимый термин выражения '' } – Diegoctn