【问题标题】:How to handle checkbox edit event in datagrid如何处理数据网格中的复选框编辑事件
【发布时间】:2014-01-29 07:11:07
【问题描述】:

我目前正在处理需要在数据网格中的复选框上单击事件的项目。

所有列和行都是手动生成的。数据网格的最后一列包含复选框,我希望用户选中此项。当我要选中该框时会发生异常:

PresentationFramework.dll 中出现“System.InvalidOperationException”类型的未处理异常

附加信息:此视图不允许使用“EditItem”。

现在,是否需要任何单独的点击事件来处理点击事件。

XAML:

     <DataGrid x:Name="single_payment" HorizontalAlignment="Left" ColumnWidth="*" Margin="11,87,0,0" VerticalAlignment="Top" Height="134" Width="261" BorderThickness="0" AutoGenerateColumns="False"/>

C#:

        /* setting columns */
        DataGridTextColumn c1 = new DataGridTextColumn();
        c1.Header = "#";
        //c1.IsReadOnly = true;
        c1.Width = 10;
        c1.Binding = new Binding("Num");
        single_payment.Columns.Add(c1);
        DataGridTextColumn c2 = new DataGridTextColumn();
        c2.Header = "Name";
        //c1.IsReadOnly = true;
        c2.Binding = new Binding("Start");
        single_payment.Columns.Add(c2);

        DataGridTextColumn c4 = new DataGridTextColumn();
        c4.Header = "Amount";
        //c4.IsReadOnly = true;
        c4.Binding = new Binding("Amt");
        single_payment.Columns.Add(c4);
        
        DataGridCheckBoxColumn c3 = new DataGridCheckBoxColumn();
        c3.Header = "Paid";
        //c3.IsReadOnly = false;
        c3.Binding = new Binding("Finich");
        single_payment.Columns.Add(c3);

        /* Set columns ends here */
        /*  set row  */
        try
        {
            dbconnection c = new dbconnection();
            c.cmd.CommandText = "SELECT * FROM purpose_master WHERE type='otp';";
            c.da.Fill(c.dt);
            if (c.dt.Rows.Count > 0)
            {
                for (int col = 0; col < c.dt.Rows.Count; col++)
                {
                    //MessageBox.Show(col.ToString());
                    single_payment.Items.Add(new Item() { Num = c.dt.Rows[col][0].ToString(), Start = c.dt.Rows[col][1].ToString(), Amt = c.dt.Rows[col][4].ToString(), Finich = "" });
                }
            }
            c.con.Close();
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
        /*   set row end */

【问题讨论】:

  • 您将 CheckBox.IsChecked 绑定到 Finich = ""... 再考虑一下。

标签: c# wpf checkbox datagrid click


【解决方案1】:

通常,Checkbox 具有可能在其列中暴露的 Checked 和 UnChecked 事件(DataGridCheckBoxColumn)。如果你需要复选框控件的点击事件,我建议你添加一个模板列而不是复选框列,并在DataTemplate中添加一个复选框。引发 Click 事件并利用它..

【讨论】:

  • 是的,我们可以使用它。但这正是我想要的。无论如何,谢谢。
猜你喜欢
  • 2021-06-16
  • 1970-01-01
  • 2015-07-24
  • 2018-02-05
  • 1970-01-01
  • 1970-01-01
  • 2013-09-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多