隐藏多个<灯>列出代码隐藏中的项
本文关键字:隐藏 代码 | 更新日期: 2023-09-27 18:16:17
我的主页中有一个非常大的无序列表项。假设它包含60多个列表项。根据某些条件,我想隐藏列表项(隐藏项可以是1到59)
我的主文件代码片段:
<li><a href="#">Authorization</a>
<ul>
<li><a href="NewCardGeneration.aspx"><span>Card Request</span></a></li>
<li><a href="cardIssueAuth.aspx"><span>Card Issue</span></a></li>
<li><a href="CardReloadAuth.aspx"><span>Card Reload</span></a></li>
<li><a href="CloseCardAuth.aspx"><span>Close Card</span></a></li>
<li><a href="CardReplacementAuth.aspx"><span>Card Replacement</span></a></li>
<li><a href="CardStatuschangeAuth.aspx"><span>Card Status Change</span></a></li>
<li><a href="UpgradeDowngradeAuth.aspx"><span>Upgrade/DownGrade</span></a></li>
</ul>
</li>
条件:-
我的DataTable
返回像
cardIssueAuth.aspx
Distributor.aspx
CardStatuschangeAuth.aspx
UpgradeDowngradeAuth.aspx
所以我想只隐藏那些页面在DataTable
我知道ID
&<li>
&的runat
属性;然后改成visible : false
但是我怎样才能有效地/动态地使用它呢?通过使用一些for循环…!!
我个人不喜欢"可见性"的hack。您可以根据DataTable
上的条目有选择地在服务器端本身呈现'li'元素(通过代码隐藏或scriptlet)。
在后台代码中,您可以有一个静态字典,其中包含所有链接的详细信息,并按节分组。加上过滤逻辑:
var sections = new List<Section>()
{
new Section()
{
Header = "Authorization",
SubLinkDetails = new Dictionary<string, string>()
{
{"NewCardGeneration.aspx", "Card Request"},
{"cardIssueAuth.aspx", "Card Issue"},
//.. and so on
}
}
//.. other sections follow
};
//filter subLinkDetails depending on the DataTable entries
sections.ForEach(s => s.SubLinkDetails.RemoveWhere(k => DataTable.Contains(k)));
这里,Section是一个方便类,RemoveWhere是dictionary的一个扩展方法:
class Section
{
public string Header { get; set; }
public IDictionary<string,string> SubLinkDetails { get; set; }
}
public static class IDictionaryX
{
public static void RemoveWhere<K,V>(this IDictionary<K,V> dictionary, Predicate<K> condition)
{
IEnumerable<K> keysToRemove = dictionary.Keys.Where(k => condition(k));
foreach (var k in keysToRemove)
{
dictionary.Remove(k);
}
}
}
在您的aspx中,访问节并呈现ul/li元素:
<%foreach (var section in sections)
{%>
<li><a href="#"><%=section.Header %></a>
<%foreach (var filteredLink in section.SubLinkDetails)
{%>
<li><a href="<%= filteredLink.Key>"><span>"<%= filteredLink.Value>"</span></a></li>
<%}%>
</li>
<%}%>
根据页面名称提供<li>
的id
,
你可以通过
if (listItem.selectedItem == 'pagename.aspx')
this.hide.style.Add("display", "none");