如果ID是一个号码,请选择一个ID?

时间:2016-01-18 15:45:00

标签: c# asp.net

有没有办法从.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;的条目。

我觉得我似乎忽略了一些事情,虽然更可能是完全错误的。

感谢您的时间

3 个答案:

答案 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_LoadonPreRender ...

中使用它

答案 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;