У меня есть запрос относительно выбранных элементов через CheckBox в DataGridView. Дело в том, что я загружаю свой DataGridView и добавляю флажки. Что происходит, у меня есть TextBox, который помогает фильтровать, когда я нажимаю цифры, чтобы отфильтровать все идет хорошо, но когда я удаляю их, CheckBox меняет положение, и CheckBox отменяется. Я прикрепляю ссылку GIF:
Как вы увидите, CheckBox меняются местами во время фильтрации и отменяются. Кто-нибудь есть идеи, как решить эту проблему?
Я оставляю метод, с помощью которого фильтр:
private void filtrarTitulo(string valor)
{
SqlConnection conexion = new SqlConnection();
conexion.ConnectionString = "chain";
conexion.Open();
DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter("SELECT Titulo FROM V_CuetaWeb WHERE Titulo LIKE ('" + valor + "%') ORDER BY Titulo DESC", conexion);
da.Fill(ds, "Cuotas");
conexion.Close();
dtgTitulo.DataSource = ds;
dtgTitulo.DataMember = "Cuotas";
}
Где я использую его:
private void txtTitulo_TextChanged(object sender, EventArgs e)
{
filtrarTitulo(txtTitulo.Text.ToString().Trim());
}
Как мне назначить CheckBox
DataGridView
:
private void Form1_Load(object sender, EventArgs e)
{
llenaTitulo();
DataGridViewCheckBoxColumn chk = new DataGridViewCheckBoxColumn();
chk.HeaderText = "Seleccione";
chk.Name = "check";
dtgTitulo.Columns.Add(chk);
dtgTitulo.AllowUserToAddRows = false;
}
И в качестве заряда DataGridView
:
public void llenaTitulo()
{
try
{
string conn = "chain";
using (SqlConnection conexion = new SqlConnection(conn))
{
conexion.Open();
string query = "SELECT Titulo AS Título FROM V_CuetaWeb GROUP BY Titulo ORDER BY Titulo DESC";
SqlCommand sqlCommand = new SqlCommand(query, conexion);
SqlDataAdapter da = new SqlDataAdapter(sqlCommand);
DataSet ds = new DataSet();
da.Fill(ds);
dtgTitulo.DataSource = ds.Tables[0];
conexion.Close();
}
}
catch (SqlException ex)
{
MessageBox.Show("Error: " + ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
Проблема первая: The ChekcBox are moved
Проблема вторая: CheckBoxes are deselected
Есть предложения?
ОБНОВЛЕНИЕ (я создаю новую форму для подтверждения примеров):
namespace Prueba
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
}
}
public class Form1 : Form
{
private DataGridView dataGridView2 = new DataGridView();
private BindingSource bindingSource1 = new BindingSource();
private SqlDataAdapter dataAdapter = new SqlDataAdapter();
// Initialize the form.
public Form1()
{
dataGridView2.Dock = DockStyle.Fill;
FlowLayoutPanel panel = new FlowLayoutPanel
{
Dock = DockStyle.Top,
AutoSize = true
};
Controls.AddRange(new Control[] { dataGridView2, panel });
Load += new EventHandler(Form1_Load);
Text = "DataGridView data binding and updating demo";
}
private void GetData(string selectCommand)
{
try
{
string connectionString = "STRING CONNECTION";
dataAdapter = new SqlDataAdapter(selectCommand, connectionString);
SqlCommandBuilder commandBuilder = new SqlCommandBuilder(dataAdapter);
// Populate a new data table and bind it to the BindingSource.
DataTable table = new DataTable
{
Locale = CultureInfo.InvariantCulture
};
dataAdapter.Fill(table);
bindingSource1.DataSource = table;
// Resize the DataGridView columns to fit the newly loaded content.
dataGridView2.AutoResizeColumns(
DataGridViewAutoSizeColumnsMode.AllCellsExceptHeader);
}
catch (SqlException)
{
MessageBox.Show("Example");
}
}
private void Form1_Load(object sender, EventArgs e)
{
DataGridViewCheckBoxColumn chk = new DataGridViewCheckBoxColumn();
chk.HeaderText = "Seleccione";
chk.Name = "check";
dataGridView2.Columns.Add(chk);
dataGridView2.AllowUserToAddRows = false;
dataGridView2.DataSource = bindingSource1;
GetData("select * from V_CuetaWeb");
}