7

Sample というビジネス オブジェクトがあり、Sample の BindingList があるとします。サンプルには 4 つのプロパティがあります。

DataGrid にバインドされているプロパティを選択できますか? または、そのようなものをカスタマイズするオプションはありませんか?

注: 私は、Autogenerate プロパティと DataMember プロパティだけでなく、DataGridView もない Compact Framework を使用しています。

返信する際は、この点に注意してください。

4

3 に答える 3

1

私はこれをいくつかの異なる方法で処理しましたが、これが役立つことを願っています。

ジャスティンが述べたように、最初のオプションは AutoGenerateColumns = false を設定し、そこから手動で行うことです。これをバインドすると、ランタイムは Sample のすべてのパブリック プロパティの列を作成します。それらを削除したい場合は、それを行うことができます

DataGridView.Columns["SomePropertyOfSample"].Remove();

このソリューションは、最新の状態に保ち、アイテムを明示的に削除する必要があるため、少し問題があります。

プロパティの Browsable 属性を false に設定する Justin の Edit 2 オプションは興味深いものです。

私が最終的に使用することになり、かなりうまく機能すると思うソリューションは、インターフェースを中心に展開しています。

同じデータを表示する必要がある 2 つの異なる DataGridView がありましたが、毎回異なる列を表示および非表示にしていました。この場合、次のようにします。

public interface ISimpleSample
{
  string Name {get;}
  int ID {get;}
}

public interface IAdvancedSample
{
  string Name {get; set;}
  int ID {get; set;}
  string Make {get; set;}
  string Model {get; set;}
}

public class Sample : ISimpleSample, IAdvancedSample
{
  //Implementation skipped
}

次に、次を使用してサンプル コレクションを作成します。

BindingList<ISimpleSample> = new BindingList<ISimpleSample>();

それにバインドします。

後で列を追加する場合は、それらを適切なインターフェイスに追加するだけです。

これは私のプロジェクトではうまくいきました。あなたの考えを教えてください。

于 2009-08-06T18:41:53.570 に答える
0

WinForms の DataGrid を意味していると思いますが、ほとんどのバインド可能なコントロールにも同じことが当てはまります。

はい、できます。これを行う方法は2ステップのプロセスです

  • DataSource メンバーを のインスタンスに設定しますBindingList<T>
  • DataMember プロパティを、バインドするプロパティの文字列名に設定します。
于 2009-07-24T20:33:11.757 に答える