【发布时间】:2014-04-17 15:54:23
【问题描述】:
使用 asp.net 4.0。我有一个带有列表视图的页面。我正在尝试根据当前的 ItemBound 值而不是 itemBound 事件在 listview itemtemplate 中显示某个预定义的面板....
例如,如果 dataItem.Item("DataGapDesc") 值等于“A”,则显示 Panel pnlPanelA,它将有 2 个文本框。如果 dataItem.Item("DataGapDesc") 的值等于“B”,则显示 Panel pnlPanelB,它将有 3 个文本框和一个复选框,依此类推。
这是我当前在 aspx 中的列表视图:
<asp:ListView ID="EmployeesGroupedByDataField" runat="server" DataSourceID="sqlDataGapsForSelectedemployees" OnItemBound="employeesGroupedByDataField_ItemDataBound">
<LayoutTemplate>
<table id="Table1" runat="server" class="table1">
<tr id="Tr1" runat="server">
<td id="Td1" runat="server">
<table ID="itemPlaceholderContainer" runat="server" >
<tr id="Tr2" runat="server">
<th id="Th1" runat="server" style="text-align:left"><u>
employee</u></th>
<th id="Th2" runat="server" style="width:5%;text-align:center"><u>
# Items Missing</u></th>
<th id="Th3" runat="server"><u>
employee DOB</u></th>
<th id="Th4" runat="server"><u>
Primary Physican</u></th>
<th id="Th6" runat="server" style="width:10%;text-align:center;border-right: thin solid #000000"><u>
Missing Data Item</u></th>
<th id="Th5" runat="server" style="text-align: center;"><u>
Last Known Visit/Service</u></th>
<th id="Th7" runat="server" style="text-align: center;"><u>
Data Entry</u></th>
</tr>
<tr ID="itemPlaceholder" runat="server">
</tr>
</table>
</td>
</tr>
<tr id="Tr3" runat="server">
<td id="Td2" runat="server" style="">
</td>
</tr>
</table>
</LayoutTemplate>
<ItemTemplate>
<%# AddGroupingRowIfemployeeHasChanged()%>
<td style="text-align: right;border-right: thin solid #000000"><%# Eval("DataGapDesc")%> </td>
<td style="text-align: left;">
<%#Eval("ServiceDate")%>
 - 
<%# Eval("PlaceOfService")%>
</td>
<td>
<%# DisplaySpecificPanel()%>
</td>
</tr>
</ItemTemplate>
</asp:ListView>
我正在调用函数 DisplaySpecificPanel(),这是我“尝试”执行此行为的地方。 VB中的那个函数:
公共函数 DisplaySpecificPanel() As String
Dim currentEmployeeNameValue As String = Trim(Eval("Employee").ToString().Substring(0, (Eval("Employee").ToString.Length) - 10).ToString())
If currentEmployeeNameValue = "DOE, JOHN" Then
'Panel1.Visible = True
Return String.Format("<asp:Button ID=""Button1"" runat=""server"" Text=""Button"" />")
Else
Return String.Format("<asp:TextBox ID=""TextBox1"" runat=""server""></asp:TextBox>")
End If
结束函数
现在,我只是通过根据值添加文本框或按钮来尝试此功能,但从长远来看,我希望添加面板... 好吧,我的函数被正确调用了,但是控件没有被放置在呈现的列表视图上。
有什么想法吗?我打算这样做对吗?非常感谢...
【问题讨论】:
标签: vb.net listview asp.net-4.0 web-controls