我根据数据库条目在asp.net的listview中运行时更改了每个行颜色, 并尝试在VB中执行相同但我得到一些无法解释的错误,如对象引用未设置为一个实例对象最有可能是这一行=>
Dim cell As HtmlTableRow = DirectCast(e.Item.FindControl("MainTableRow"),mlTableRow)
如果在VB中有更好的方法/正确的方法,请告诉我?
Protected Sub ListView2_ItemDataBound1(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.ListViewItemEventArgs) _
Handles ListView2.ItemDataBound
If e.Item.ItemType = ListViewItemType.DataItem Then
Dim dataitem As ListViewDataItem = DirectCast(e.Item, ListViewDataItem)
Dim mstorename As String = DataBinder.Eval(dataitem.DataItem, "Store")
If mstorename = "A1" Then
Dim cell As HtmlTableRow = DirectCast(e.Item.FindControl("MainTableRow"), mlTableRow)
cell.BgColor = #E0E0E0
End If
End If
End Sub
Run Code Online (Sandbox Code Playgroud)
非常感谢您的帮助.
DK
为此,您必须确保MainTableRow
为tr
元素提供id 并将其标记为runat="server"
ie确保您的标记(html)类似于
<ItemTemplate>
<tr id="MainTableRow" runat="server">
...
Run Code Online (Sandbox Code Playgroud)
不同的(和IMO,更简单)方法将使用数据绑定表达式.例如,在您的标记中,使用
<ItemTemplate>
<tr class='<%# GetRowStyle(Container.DataItem) #>'>
Run Code Online (Sandbox Code Playgroud)
在代码隐藏中,有一个受保护的函数来提供基于数据的CSS类(例如c#函数的例子)
protected string GetRowStyle(object item)
{
var store = DataBinder.Eval(item, "Store");
if (store == "A1")
{
return "altRow";
}
else
{
return "row";
}
}
Run Code Online (Sandbox Code Playgroud)
最后,根据您的需要定义那些css类(row,altRow).
归档时间: |
|
查看次数: |
5746 次 |
最近记录: |