32

私がDataGridView設定した場所がありますDataSource

taskerEntities te = new taskerEntities();
var OMsMasterDescriptiveIndicators = te.MyTable.Select(x => new lccls {Id = x.Id, name = x.name }).ToList();
MyGrid.DataSource = OMsMasterDescriptiveIndicators;

私のclass lcclsように

public class lccls
    {
        public string Id { get; set; }
        public Nullable<decimal> name { get; set; }
    }

特定のイベントで、現在の行を非表示にしたい:

 MyGrid.Rows[5].Visible = false;

しかし、私はこれを行うことができません。代わりに、次のエラー メッセージとともに例外がスローされます。

通貨マネージャーのポジションに関連付けられた行を非表示にすることはできません

理由は設定に関連していると思われますDataSourceが、なぜですか?

4

7 に答える 7

15

現在の行インデックスの場合、yourDataGridView 行の表示プロパティを false に設定できません 現在のセルを非表示にしようとすると、このようなエラーが発生します

解決策 :

yourDataGridView データ ソースが null でない場合:

  CurrencyManager currencyManager1 = (CurrencyManager)BindingContext[yourDataGridView.DataSource];
                       currencyManager1.SuspendBinding();
                       yourDataGridView.Rows[Target Index].Visible = false;
                       currencyManager1.ResumeBinding();

yourDataGridView データ ソースが null の場合:

 yourDataGridView.CurrentCell = null;
 yourDataGridView.Rows[Target Index].Visible = false;
于 2016-02-04T04:37:52.687 に答える
1

Uの例があります。行を複数選択できるデータグリッドビューがあります。ボタンをクリックすると、選択した偽の行が表示されます。これを試して:

foreach (DataGridViewRow row in dataGridView1.SelectedRows)
        {
            CurrencyManager currencyManager1 =(CurrencyManager)BindingContext[dataGridView1.DataSource];
                currencyManager1.SuspendBinding();
                dataGridView1.CurrentCell = null;
                row.Visible = false;
        }
        dataGridView1.Refresh();

プロパティ SelectionMode: FullRowSelect を忘れずに設定してください。

于 2013-12-14T07:47:43.193 に答える