【问题标题】:Creating a table and binding to repeater dynamically from two database tables从两个数据库表动态创建表并绑定到转发器
【发布时间】:2011-11-01 12:52:34
【问题描述】:

我正在为我的企业开发 CMS 系统,并且需要能够在控制面板中动态生成通知。请注意,我使用的是 .NET 2.0,使用 VB 进行编码,并且我的数据都保存在 MySQL 数据库中。

这在大多数方面都非常简单,但由于整个事情是动态的,有些事情被证明更加困难。

我有一套

使用转发器动态生成的标签如下:

<asp:Repeater runat="server" ID="locationRepeater">
<ItemTemplate>
    <p id='locationNotification' title="<%# Container.DataItem %>" runat='server'>
           COUNT DATA NEEDS TO GO HERE
    </p>                                
    <div class="jewelDescription" id="locationQuestionsNote" runat='server'>
       Notification pending for <%# Container.DataItem %> <!-- (gives location name) -->
    </div>
</ItemTemplate>
</asp:Repeater>

目前,Container.DataItem 通过位置名称列表的非常简单的 dataBind 为我提供位置名称

Dim locationList As Array = Split("1,2,3", ",")
    locationRepeater.DataSource = locationList
    locationRepeater.DataBind()

这很棒,它允许在系统中添加和删除位置,控制面板会根据当前使用的位置数量自动更新。

但是...我这里没有实际数据,这应该是来自单独数据库表的记录计数。

数据非常非常简单,我需要做的就是在我的 MySQL 数据库中查询 ID WHERE locationName = Container.DataItem 在中继器的每个循环期间的 COUNT 表...但我没有不知道该怎么做。

我在想也许我必须先这样做,以某种方式在内存中创建一个表,但恐怕我不知道如何实现这一点。

有没有人有任何类似的例子,它是一种绑定到来自两个数据源的转发器......每个任务都很简单,但我不知道如何将它们放在一起!

【问题讨论】:

    标签: asp.net mysql vb.net repeater


    【解决方案1】:

    您可以使用Repeater.ItemDataBound 事件:

    <asp:Repeater runat="server" ItemDataBound="locationRepeater_ItemDataBound" ID="locationRepeater">
    
     Protected Sub locationRepeater_ItemDataBound(Sender As Object, e As RepeaterItemEventArgs)
    
        If (e.Item.ItemType = ListItemType.Item) Or _
            (e.Item.ItemType = ListItemType.AlternatingItem) Then
    
            'EXAMPLE: Change this to get your id and do the database call.
            If CType(e.Item.DataItem, Evaluation).Rating = "Good" Then
                CType(e.Item.FindControl("RatingLabel"), Label).Text = _
                    "<b>***Good***</b>"
            End If
        End If
     End Sub
    

    【讨论】:

    • 这看起来很有趣。我是否正确假设 e.Item.DataItem 是转发器 &lt;%# Container.DataItem %&gt; 的值,而您的代码 If CType ... end if 是我的数据库调用需要去的地方?
    • 哦,还有@rick,这是一种非常低效的方法吗?唯一困扰我的是它在每个循环中都打开数据库,它只会是大约 3/4 次,但仍然......
    • 我收到错误类型“System.Web.UI.WebControls.Repeater”没有名为“ItemDataBound”的公共属性。现在...有什么想法可以让我发挥作用吗?
    • 已排序,这是 .NET 2.0 的问题。一切正常,谢谢! :D
    猜你喜欢
    • 2019-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-19
    • 2016-03-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多