.Net Repeater等效于单个对象?

时间:2009-05-03 11:50:35

标签: .net webforms repeater custom-server-controls

有人可以尝试推荐解决以下请求的最佳原因:

我使用Repeater类作为Base创建了许多扩展类,并且喜欢这样做的灵活性,简易性和结果。我现在要做的是为单个对象制作类似的自定义Web控件(即DataSource没有实现IListSource或IEnumerable)。我已经通过扩展转发器创建了我想要实现的结构,然后在使用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,它使用反射(可以用于实现特定接口的所有类),它将生成所需的表单,每次只需要三行代码(上图)。< / p>

我是否应该将属性添加到自定义转发器(DataObject)中,该转发器接收对象并相应地设置DataSource并节省我的时间?或者有更好的方法吗?

希望这一切都有意义!

干杯, 史蒂夫

3 个答案:

答案 0 :(得分:5)

你正在努力解决转发器想要一个List并且你想给它一个实例的事实。只需将其包装在新的List * oObj中,然后继续。它一直都在做。

我当然不知道他们在使用该自定义服务器控件时遇到了什么。在我看来,你再次努力了。

<asp:repeater id="whatever" runat=server>
   <ItemTemplate>First Name: <%# DataBinder.Eval(Container.DataItem,"FirstName") %></ItemTemplate>
</asp:repeater>

答案 1 :(得分:2)

我完全理解你的观点,stibstibstib。我还希望ASP.NET Framework附带一个模板驱动的服务器控件,如ListView,但是对于单个数据对象。为了让它与Repeater和ListView一起工作,从单个项目创建一个列表似乎是不必要的,并且感觉有点哈希。我知道它有效。我知道这是一个简单的解决方案。但ASP.NET是一个框架,它似乎只是一个应该修复的遗漏。本文http://gadgetopia.com/post/5343涉及相同的概念,即在网站上查看内容有两种基本方式:作为单个项目,以及作为列表中的项目。仍然感到惊讶ASP.NET没有像ItemView服务器控件那样的东西

答案 2 :(得分:1)

在某些情况下,您可以使用DetailsView

相关问题