1

我想将数据绑定重复的值存储到会话状态。

到目前为止,这是我的代码:

<asp:Repeater ID="Repeater1" runat="server" DataSourceID="SqlDataSource1">
<ItemTemplate>
<h1 id="price" class="QPrice">$<%# Eval("Price")%></h1>
</ItemTemplate>
</asp:Repeater>

代码背后”

Session("Qprice") = ?

如何从代码隐藏中检索 h1 元素的值或检索 SqlDatasource1 的特定值?

4

3 回答 3

1

Session("Qprice"+ID) = (decimal)drv.Row["Price"]; 最后,您将获得会话中的所有价格,并且您可以通过绑定到列表的数据的 id 访问。但是您正在存储您可以访问的信息。

于 2012-05-08T13:47:30.207 回答
0

我会先将它存储为强类型 List 并将其存储在 Session

Protected Sub Repeater1_ItemDataBound(sender As Object, e As RepeaterItemEventArgs)
    Dim repeaterItems As New List(Of Decimal)()

    If e.Item.ItemType = ListItemType.Item OrElse e.Item.ItemType = ListItemType.AlternatingItem Then
        Dim b As Button = TryCast(e.Item.FindControl("myButton"), Button)
        Dim drv As DataRowView = TryCast(e.Item.DataItem, DataRowView)


        repeaterItems.Add(CDec(drv.Row("Price")))
    End If


    Session("Qprice") = repeaterItems
End Sub

所以我以后可以再次访问它

Dim repeaterItemsFromSession As List(Of Decimal) = DirectCast(Session("Qprice"), List(Of Decimal))
于 2012-04-25T03:51:15.143 回答
0

在 repeater1 中定义对象 DatakeyNames="Price" 并指定 Item Data Bound 事件,然后在后面的代码中

protected void repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e) 
{ 
    if (e.Item.ItemType == ListItemType.Item 
                          || e.Item.ItemType == ListItemType.AlternatingItem) 
    { 
        Button b = e.Item.FindControl("myButton") as Button;  
        DataRowView drv = e.Item.DataItem as DataRowView; 
        Session("Qprice") = (decimal)drv.Row["Price"];
    } 
} 

在这里,您可以保存价值或用价格做任何您想做的事情。

于 2012-04-25T00:29:02.523 回答