sar*_*ake 7 c# data-binding compact-framework bindinglist
假设我有一个名为Sample的业务对象,我有样本的BindingList.样本有4个属性.
我可以选择哪些属性绑定到DataGrid,或者没有选项来自定义这样的东西?
注意:我使用Compact Framework,其中没有DataGridView,以及Autogenerate属性和DataMember属性.
回复时请记住这一点.
Jus*_*ury 10
BindingList<Sample> samples = new BindingList<Sample>();
DataGridView dgv = new DataGridView();
dgv.DataSource = samples;
Run Code Online (Sandbox Code Playgroud)
这应该将每个公共属性显示为DataGridView上的列.如果要更改显示的属性,还需要执行以下操作:
dgv.AutoGenerateColumns = false;
Run Code Online (Sandbox Code Playgroud)
并进入datagridview的属性,手动添加列并将DataPropertyName设置为属性名称.
如果您在代码中创建了datagridview,则以下内容将创建并向dgv添加一列.
DataGridViewColumn dgvc = new DataGridViewColumn();
dgvc.Name = "PropertyA";
dgvc.HeaderText = "Property A";
dgvc.DataPropertyName = "PropertyA";
dgv.Columns.Add(dgvc);
Run Code Online (Sandbox Code Playgroud)
这应该给你一些更接近你想要的东西.但是,因为它使用匿名类,所以不能使用BindingList(我知道).或者,您可以创建一个SampleBinding类,它只包含您想要显示的属性,并从正常样本列表中生成这些属性.
public class Sample
{
public int PropertyA {get;set;}
public bool PropertyB {get;set;}
public string PropertyC {get;set;}
public double PropertyD {get;set;}
}
List<Sample> samples = new List<Samples>(GetSamples());
var sampleBinding = from sample in samples
select new
{
PropertyA = sample.PropertyA,
PropertyC = sample.PropertyC
};
BindingList bl = new BindingList();
bl.DataSource = sampleBinding;
dgv.DataSource = bl;
Run Code Online (Sandbox Code Playgroud)
public class Sample
{
[Browsable(false)]
public int PropertyA {get;set;}
public bool PropertyB {get;set;}
public string PropertyC {get;set;}
[Browsable(false)]
public double PropertyD {get;set;}
}
Run Code Online (Sandbox Code Playgroud)
我假设您指的是 WinForms 中的 DataGrid,但这同样适用于大多数可绑定控件。
是的,你可以这样做。执行此操作的方法分为两步
BindingList<T>
. 归档时间: |
|
查看次数: |
7304 次 |
最近记录: |