有没有办法从.cs文件中选择aspx文件中的列表项,以使<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"
添加到各个地方,但没有运气。
有没有办法像网格视图一样选择:grdv_dummy.Columns[29].Visible = false;
?
我想按ID选择li
,将可见性设置为false,以便根据用户对服务器端进行操作。保存新的自定义视图时,将使用ID号更新数据库。当我尝试使用id="item"
所需的页面尝试加载时,我会收到错误Input string was not in a correct format
;由于数据库中有条目&#39;的条目。
我觉得我似乎忽略了一些事情,虽然更可能是完全错误的。
感谢您的时间
答案 0 :(得分:1)
您的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
...
答案 1 :(得分:0)
你不能在服务器端直接访问它。但是,你可以从服务器端调用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>
答案 2 :(得分:0)
管理以找到解决问题的方法。我知道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;