生成仅包含所选属性的对象概述

时间:2012-10-03 07:47:54

标签: c# ascx

我有一个用户控件,我在整个Web应用程序中使用它。它在表格中返回List<Person>。目前,列表中显示的属性是固定的(按代码)。

我想更改控件,以便它接受一个属性列表,然后用于呈现那些对象(类型为Person)的表,只显示所选属性。

这只能使用反射吗?实现这一目标的最佳途径是什么。

对象:

Class Person{
  Name{get;set;}
  Age{get;set;}
  Address{get;set;}
  Role{get;set;}
  AnotherProperty{get;set;}
}

usercontrol只获取Person列表并在一个普通的html表中显示结果(通过转发器)。 现在我希望usercontrol可以自定义,在这个html表中显示哪些属性。我希望usercontrol如下使用:

<uc:PersonSearchList runat="server" ID="someId" ShowProperties="Name, Address, Role" />

或设置在代码后面:

PropertyInfo[] ShowProperties = Person.GetType().GetProperties();

1 个答案:

答案 0 :(得分:0)

你可以通过几种方式来做到这一点。我告诉你两个。

首先,您可以在用户控件中创建公共属性。然后,在后面的代码中,将列表添加到属性中,如下所示:

用户控制:

Partial Class user_controls_myControl
    Public newList As List(Of myList)

    'do your other suff
end Class

ASPX页面:

dim nameOfList as new List(of String)
me.myControl1.newList = nameOfList

或者,您可以将其添加到公共方法中。

Partial Class user_controls_myControl
    Public Sub bindData(ByVal commentList As List(Of CDTrialNotification))
       'attach to your gridviews here
    end sub
end Class

ASPX页面:

   dim myList as new List(of String)
   me.myControl1.bindData(myList)