我浏览过已经回答过这个主题的不同案例,但没有找到回答我问题的案例:
<asp:ListView ID="lstView_phoneUsersExtensionsFound" runat="server" OnItemDataBound="lstView_phoneUsersExtensionsFound_ItemDataBound">
<LayoutTemplate>
<table id="tbl1" runat="server" class="bordered">
<tr id="tr1" runat="server">
<th id="th1" runat="server" visible='<%# selectOptionVisible %>' >Select</th>
<th id="th1" runat="server">UserID</th>
<th id="th2" runat="server">Firstname</th>
<th id="th3" runat="server">Lastname</th>
</tr>
<tr id="ItemPlaceholder" runat="server">
</tr>
</table>
</LayoutTemplate>
<ItemTemplate>
<tr>
<td runat="server" visible='<%# selectOptionVisible %>' >
<input type="radio" name="rdbutton_userSelection" value='<%# Eval("uuid") %>' />
<asp:HiddenField runat="server" ID="hdfield_userID" Value='<%# Eval("uuid")%>' />
</td>
<td><asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl='<%# String.Format("~/Users/DisplayUserDetails.aspx?selectedCCMUserID={0}&uuid={1}",Eval("userID"),Eval("uuid"))%>'><%# Eval("userID")%></asp:HyperLink></td>
<td><%# Eval("firstname")%></td>
<td><%# Eval("lastname")%></td>
</tr>
</ItemTemplate>
<EmptyDataTemplate></EmptyDataTemplate></asp:ListView>
转发器layouttemplate标头不考虑可见值,但不同的项目运行良好,并在需要时隐藏单元格。 我想继续使用aspx函数,如果可能的话不要通过javascript或CSS。 有什么想法吗?
答案 0 :(得分:0)
试试这个......
<th id="th1" runat="server" visible='<%# Eval("selectOptionVisible") %>'>
问题在于可见='&lt;%# selectOptionVisible %&gt;'
相反,我将其更改为visible ='&lt;%# Eval(“selectOptionVisible”)%&gt;'
确保您的数据源包含 selectOptionVisible
列隐藏列标题,即&lt; th&gt;,
在页面加载时将“selectOptionVisible”加载到代码后面的变量中。
而不是'&lt;%#Eval(“selectOptionVisible”)%&gt;'
现在您可以使用'&lt;%# selectOptionVisibleVariable %&gt;'。
在将数据加载到ListView之前设置selectOptionVisibleVariable的值。
答案 1 :(得分:0)
以下代码可以解决问题,但我确信应该有更好的方法。
protected void lstView_phoneUsersExtensionsFound_ItemDataBound(object sender, ListViewItemEventArgs e)
{
HtmlTableCell th_selectColumn = (HtmlTableCell)lstView_phoneUsersExtensionsFound.FindControl("th1");
th_selectColumn.Visible = selectOptionVisible;
}