是否有人可以尝试推荐最好的行动原因来解决以下请求:
我已经使用Repeater类作为基础创建了许多扩展类,并且喜欢这样做的灵活性、简单性和结果。我现在想做的是为单个对象(即没有实现IListSource或IEnumerable的DataSource )制作一个类似的Custom Web Control。我已经创建了我试图实现的结构,通过扩展中继器,然后在设置数据源时,使用一个包含1个项目的列表来保存对象,然后进行数据绑定。
e.g a rough example:
Dim oObj as New MyObject(1)
Dim gl As New Generic.List(of MyObiect)()
gl.Add(oObj)
rpt.DataSource = gl
rpt.DataBind()
这看起来确实像是一个围绕事物的小技巧,我希望能够做的是:
e.g new call, where my control is the new custom control:
Dim oObj as New MyObject(1)
myControl.DataSource = oObj
myControl.DataBind()
我希望能够使用各种变量和属性来定义这个自定义控件,其结果将启用以下类型的布局:
<My:ObjControl ID="frm" runat="server">
<Tabs>
<My:Tab name="Details">
<Items>
<My:Item Type="Text" Label="First Name" Property="FirstName" />
<My:Item Type="Text" Label="Last Name" Property="LastName" />
<My:Item Type="Text" Label="Title" Property="Title" />
</Items>
</Tab>
<My:Tab name="Address">
<Items>
<My:Item Type="Text" Label="Address 1" Property="Address1" />
<My:Item Type="Text" Label="Address 2" Property="Address2" />
<My:Item Type="Text" Label="Address 3" Property="Address3" />
</Items>
</Tab>
</Tabs>
</My:ObjControl>
这种实现必须使用WebForms实现,尽管考虑到上面的情况,使用MVC看起来是最理想的方法。通过这样做,我想创建一个灵活的WebControl,它使用反射(它可以用于实现特定接口的所有类),它将在每次需要时生成所需的表单,只需要后面的三行代码(上面)。
我是否应该向一个自定义中继器(DataObject)添加一个属性,该中继器接受一个对象并相应地设置DataSource,从而节省我的时间?还是有更好的方法?
希望这一切都是有意义的!
干杯,史蒂夫
发布于 2009-05-03 12:20:26
你正在努力绕过中继器想要一个列表,而你想给它一个实例的事实。只需将其包装在一个新的列表中* oObj ),然后继续。这是一直都在做的。
我当然不知道那个自定义服务器控件到底是怎么回事。在我看来,你又太努力了。
<asp:repeater id="whatever" runat=server>
<ItemTemplate>First Name: <%# DataBinder.Eval(Container.DataItem,"FirstName") %></ItemTemplate>
</asp:repeater>
https://stackoverflow.com/questions/816864
复制相似问题