Обновите Datagrid OnClick на флажки - PullRequest
0 голосов
/ 22 марта 2019

Мне нужно обновить связь между сеткой данных и таблицей БД SQL.Когда я нажимаю на флажки некоторых элементов, отображаемых в сетке данных, мне приходится обновлять всю сетку данных.Все это ... почему?

Потому что, если щелчок для изменения состояния флажка отсутствует на флажке, состояние не изменяется.Для этого я подумал, что, возможно, чтобы упростить задачу, я мог бы обновить запрос SELECT.Это позволяет мне показать таблицу DB в сетке данных.

Так как я могу это сделать?Должен ли я обновить запрос или обновить сетку данных?Вот код флажка:

//CHECKBOX MAINLIST
private void Row_DoubleClick_ex(object sender, MouseButtonEventArgs e)
{
    sqliteCon.Open();
    if (sqliteCon.State == System.Data.ConnectionState.Open)
    {
        //PER IDENTIFICARE LA LINEA CORRENTE:
        var currentRowIndex = ListTable.Items.IndexOf(ListTable.CurrentItem);
        string q = @"UPDATE tabList
                     SET selection = (
                         CASE WHEN (SELECT selection 
                                    FROM tabList 
                                    where idL = @CURRENT) = 0
                              THEN 1
                              ELSE 0
                         END)
                     WHERE idL = @CURRENT";
        // This doesn't work:
        CollectionViewSource.GetDefaultView(ListTable.ItemsSource).Refresh();
        SqlCommand cmd = new SqlCommand(q, sqliteCon);
        currentRowIndex = currentRowIndex + 1;
        cmd.Parameters.AddWithValue("@CURRENT", currentRowIndex);
        cmd.ExecuteNonQuery();
        MessageBox.Show("Item Checked");
    }
    sqliteCon.Close();
}
CollectionViewSource.GetDefaultView(ListTable.ItemsSource).Refresh(); 

Я пытался реализовать это, но это не работает.И вот это XAML

 <DataGrid AutoGenerateColumns="True" x:Name="ListTable" Binding.SourceUpdated="ListTable_SourceUpdated"  Grid.ColumnSpan="2" ColumnWidth="165" Margin="0,0,94,-12.5"  >
                        <DataGrid.ItemContainerStyle>

                            <Style TargetType="DataGridRow">

                                <EventSetter Event="MouseDoubleClick" Handler="Row_DoubleClick_ex"/>
                            </Style>
                        </DataGrid.ItemContainerStyle>
                    </DataGrid>

здесь есть запрос

//Primo caricamento tabella dati
        try
        {
            sqliteCon.Open();
            string Query = "select tabList.selection,tabList.nomeItem , tabList.resItem from tabList ";

            SqlCommand createCommand = new SqlCommand(Query, sqliteCon);
            createCommand.ExecuteNonQuery();
            SqlDataAdapter dataAdp = new SqlDataAdapter(createCommand);
            DataTable dtlb = new DataTable("tabList");
            dataAdp.Fill(dtlb);
            ListTable.ItemsSource = dtlb.DefaultView;
            dataAdp.Update(dtlb);

        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
        sqliteCon.Close();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...