如果是数字,请选择一个 ID
本文关键字:一个 ID 数字 请选择 如果 | 更新日期: 2023-09-27 18:30:54
有没有办法从 aspx 文件中选择一个列表项 从.cs文件中使<li>
可见。<li>
的 ID 是数字。
它们之所以是数字,是因为此页面是网站的自定义视图编辑器,它正在更新数据库,然后为用户加载正确的视图。我需要在此页面上为某些用户隐藏一些项目。
来自 aspx 页的代码片段:
<div id="connectedSortableLists">
<ul id="unselected" class="connectedSortable">
<li class="ui-state-highlight" id="0">Log #</li>
<li class="ui-state-highlight" id="19">Log date</li>
</ul>
</div
我尝试将runat="server"
添加到各个地方,但没有运气。有没有办法为网格视图选择 like,例如:grdv_dummy.Columns[29].Visible = false;
?
我想通过 ID 选择li
以将可见性设置为 false 以根据用户在服务器端执行此操作。保存新的自定义视图时,将使用 ID 号更新数据库。当我尝试使用所需页面尝试加载id="item"
时,我收到错误Input string was not in a correct format
;由于数据库的条目为"项目"。
我觉得我好像忽略了一些东西,尽管更有可能是完全错误的。
谢谢你的时间
你肯定需要runat=server
你的li
元素(或ul
元素)。然后,您需要在ID中添加字母-您不能仅将数字作为id。所以像"项目"这样的东西。然后在.cs文件中使用类似以下内容的内容:
private HtmlElement FindListItem(int id)
{
HtmlElement listItem = this.FindControl("item" + id.ToString()) as HtmlElement;
if (listItem != null && listItem.TagName == "li")
{
return listItem;
}
return null;
}
基本上 FindControl() 是你需要的。然后你可以像这样使用它:
var item = FindListItem(19);
if (item != null)
{
item.Visible = false;
}
哦,根据您设置代码的方式,您将在Page_Load
或onPreRender
中使用它......
您无法在服务器端直接访问它。但是,您可以从服务器端调用javascript函数,它可以启用''禁用它。
在服务器端
string jsFunc = "DisableHtmlLi(" + iterator + ")";
ScriptManager.RegisterStartupScript(this.Page, Page.GetType(), "DisableHtmlLi", jsFunc, true);
在客户端
<script type="text/javascript" language="javascript">
function DisableHtmlLi(index) {
var element = document.getElementById(index);
element.visible= false;
}
</script>
设法
找到了解决问题的方法。我知道li
不应该放在其他li
,但它对我有用。
ASPX 已更改
<div id="connectedSortableLists">
<ul id="unselected" class="connectedSortable">
<li class="ui-state-highlight" id="0">Log # </li>
<li class="ui-state-highlight" id="19">Log date</li>
<li runat="server" id="full" visible="false">
<li class="ui-state-highlight" id="32">Days Country</li>
<li class="ui-state-highlight" id="33">Days total</li>
</li>
</ul>
</div
.CS页
full.Visible = true;