CheckBoxCell型セルの値でDataViewのRowFilterを設定している場合、CheckBoxCell型セルの値が変更されたと同時にFilterをかける方法

(2)チェックボックス型セルの値の確定
セル型に関わらず、値を変更した後に他の行をクリックしたときに値が
確定するようになっています。

ご希望の動作にするには、CellEditedFormattedValueChangedイベントで
明示的に値を確定する方法をご検討いただければと存じます。

お手数とは存じますが、下記のサンプルコードをご参考にして
いただければ幸いです。

セル型に関わらず、値を変更した後に他の行をクリックしたときに値が
確定するようになっています。

ご希望の動作にするには、CellEditedFormattedValueChangedイベントで
明示的に値を確定する方法をご検討いただければと存じます。

using System;
using System.Collections.Generic;
using
System.ComponentModel;
using System.Data;
using System.Drawing;
using
System.Linq;
using System.Text;
using System.Windows.Forms;
using
GrapeCity.Win.MultiRow;

namespace M150112002
{
public partial
class Form1 : Form
{
public Form1()

{
InitializeComponent();
}

private void
Form1_Load(object sender, EventArgs e)
{
//
データの作成
DataTable dt = new DataTable("TEST");

dt.Columns.Add("ColumnA", typeof(Boolean));

dt.Columns.Add("ColumnB", typeof(String));
dt.Rows.Add(false,
"B0");
dt.AcceptChanges();
DataView dv =
dt.DefaultView;
dv.RowFilter = "ColumnA =
'False'";
//dv.RowFilter = "ColumnB = 'B0'";

// セル型の作成
CheckBoxCell checkCell = new
CheckBoxCell();
checkCell.Name = "checkCell";

checkCell.DataField = "ColumnA";
TextBoxCell textCell = new
TextBoxCell();
textCell.Name = "textCell";

textCell.DataField = "ColumnB";

// MulitRowの設定

gcMultiRow1.AllowUserToAddRows = false;
gcMultiRow1.Template =
Template.CreateGridTemplate(new Cell[] { checkCell, textCell });

gcMultiRow1.DataSource = dt;

gcMultiRow1.CellEditedFormattedValueChanged += new

EventHandler<CellEditedFormattedValueChangedEventArgs>(gcMultiRow1_CellEditedFormattedValueChanged);

}

private void gcMultiRow1_CellEditedFormattedValueChanged(object
sender, CellEditedFormattedValueChangedEventArgs e)
{

if (e.CellName == "checkCell")
{
//
変更の確定
gcMultiRow1.EndEdit();

EditingActions.CommitRow.Execute(gcMultiRow1);
}
}

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です