2

こんにちは開発者私はVS2010を使用しています。チェックボックス列がある開発エクスプレスグリッドがあります。問題は、チェックボックスをオンにするとチェックボックスがオンになりますが、他のセルまたは列に移動するとチェックボックスが自動的にオフになります。今私のコードは次のとおりです

 if (e.Column.ToString()=="Active" )
            {

                RepositoryItemCheckEdit edit = UserInfoGridView.GridControl.RepositoryItems.Add("CheckEdit") as RepositoryItemCheckEdit;


                column = e.Column;
                column.OptionsColumn.AllowSort = DevExpress.Utils.DefaultBoolean.False;
                column.Visible = true;
                column.VisibleIndex = 3;
                column.FieldName = "CheckMarkSelection";
                column.Caption = "Active";
                column.OptionsColumn.ShowCaption = true;
                column.OptionsColumn.AllowEdit = true;
                column.OptionsColumn.AllowSize = false;


                column.UnboundType = DevExpress.Data.UnboundColumnType.Boolean;

                column.ColumnEdit = edit;

            }
4

5 に答える 5

4

さて私は答えを見つけました.........私がしたことはこれでした

   public frmLoad()
    {


        InitializeComponent();


        string DisplayQuery = "Select * from TableName";
         MasterDs = SqlHelper.ExecuteDataset(CommonClass.ConnectionString, CommandType.Text, DisplayQuery);
        MasterDs.Tables[0].Columns.Add("FLAG", typeof(string));

        MainGrid.DataSource = MasterDs.Tables[0];
        gridview.PopulateColumns();

        gridview.Columns["ID"].VisibleIndex = -1;
        gridview.Columns["FLAG"].VisibleIndex = -1;

        DevExpress.XtraEditors.Repository.RepositoryItemCheckEdit selectnew = new DevExpress.XtraEditors.Repository.RepositoryItemCheckEdit();
        gridview.Columns["ColName"].ColumnEdit = selectnew;
        selectnew.NullText = "";
        selectnew.ValueChecked = "Y";
        selectnew.ValueUnchecked = "N";
        selectnew.ValueGrayed = "-";

    }
于 2012-07-27T11:19:59.480 に答える
0

チェックとチェック解除のアクションの後、グリッドがバインドされているデータソースが変更されていないことが原因である可能性があります。ビューのイベントを処理してCellValueChanged、darasourceのオブジェクトのプロパティ値を変更しますか?

private void gridView1_CellValueChanged(object sender, CellValueChangedEventArgs e)
        {
            if (e.Column.Name != "Active")
                return;

            var person = gridView1.GetFocusedRow() as Person;
            person.Active = Convert.ToBoolean(e.Value);
        }

または、グリッドのデータソースとしてDataSetを使用する場合:

var id = gridView1.GetFocusedRowCellValue("IdColumnName");
var active = gridView1.GetFocusedRowCellValue("ActiveColumnName");

NorthwindDataSet.PersonsRow PersonsRow = 
    northwindDataSet1.Persons.FindByPersonID(id);

PersonsRow.ACTIVE= Convert.ToBoolean(active);

PS:テストされていません

于 2012-07-26T12:21:04.120 に答える
0

この
文字列のように試してくださいDisplayQuery="declare @Active bit; set @ Active = 0; select @Active as Active、* from TableName";

于 2014-05-22T07:19:13.697 に答える
0

この問題は、列の基になるタイプが正しくないことが原因である可能性があります。すぐに使用できるはずboolです。

タイプを設定するには、次のような方法を試してください。

MasterDs.Tables[0].Columns[0].DataType = typeof(bool);
于 2015-03-17T13:35:16.743 に答える
0

ObjectContextのバックエンドとしてEntityFramework6.1を使用しています。データベースタイプをtinyintに設定しました。これは、エンティティフレームワークがクラ​​スを更新するときにバイトにマップされます。

データベースタイプをビットに変更し、エンティティオブジェクトを更新すると、正しいブールタイプが作成されます。その後、チェックボックスがDevExpressWinformsに正しく表示されます。

于 2015-09-27T01:50:54.110 に答える