如何获取页面控件的值.求帮忙....

liujie2715 2010-11-16 03:05:47
<div style="Z-INDEX: 0" class="drawers-wrapper">
<div class="boxcap captop"></div>
<ul class="drawers">
<li id="top1" class="drawer">
<ul>
<h2 class="drawer-handle">系统设置</h>
<li id="l_qxgl" runat="server"><A id="qxgl" title="权限管理" href="#">权限管理</A></li>
<li id="l_rywh" runat="server"><A id="rywh" title="人员维护" href="#">人员维护</A></li>
<li id="l_bmwh" runat="server"><A id="bmwh" title="部门维护" href="#">部门维护</A></li>
<li id="l_shlcsz" runat="server"><A id="shlcsz" title="审核流程设置" href="#">审核流程设置</A></li>
<li id="l_gsgl" runat="server"><A title="公司管理" href="#">公司管理</A></li>
</ul>
</li>
</ul>
</div>
上面是HTML代码,我现在想循环获得<li>标记的ID.. 下面方法如下
int nPageControls = Page.Controls.Count;
for (int i = 0; i < nPageControls; i++)
{
foreach (System.Web.UI.Control control in Page.Controls[4].Controls)
{
this.Label1.Text=control.ID.ToString();
}
}
这样方法有什么不对吗? 为什么我获取不到<li>标记的ID值..ClientID OR ID我都试了..就是不行
大侠们帮帮忙看看啊.
...全文
130 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
yunsheng3835 2010-11-16
  • 打赏
  • 举报
回复
用control实现就好了
Ghost_Khz 2010-11-16
  • 打赏
  • 举报
回复
老孟的代码很清晰了。。
moudy 2010-11-16
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 liujie2715 的回复:]

引用 8 楼 moudy 的回复:
//具体Page.Controls数组是第几个包含根据你自己的页面来试,下面在我本地调试可行

int nPageControls = Page.Controls.Count;
for (int i = 0; i < nPageControls; i++)
{
foreach (System.Web.UI.Control control in Pa……
[/Quote]

大哥,3不是说你取第三个控件。是说你要取的这些控件是页面第3个控件的子控件。
孟子E章 2010-11-16
  • 打赏
  • 举报
回复
使用这种Page.Controls[4]方法很不好,如果前面增加了控件,这些代码就无效的了,最好的 方法是采用PlaceHolder占位符。例如

<%@ Page Language="C#" %>

<script runat="server">

protected void Button1_Click(object sender, EventArgs e)
{
foreach (Control c in x.Controls)
{
Response.Write("<li>" + c.ClientID);
}
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
</head>
<body>
<form id="form1" runat="server">
<div id="t">
<ul>
<h2 class="drawer-handle">
系统设置 </h>
<asp:PlaceHolder ID="x" runat="server">
<li id="l_qxgl" runat="server"><a id="qxgl" title="权限管理" href="#">权限管理 </a></li>
<li id="l_rywh" runat="server"><a id="rywh" title="人员维护" href="#">人员维护 </a></li>
<li id="l_bmwh" runat="server"><a id="bmwh" title="部门维护" href="#">部门维护 </a></li>
<li id="l_shlcsz" runat="server"><a id="shlcsz" title="审核流程设置" href="#">审核流程设置 </a>
</li>
<li id="l_gsgl" runat="server"><a title="公司管理" href="#">公司管理 </a></li>
</asp:PlaceHolder>
</ul>
</div>
<asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />
</form>
</body>
</html>
孟子E章 2010-11-16
  • 打赏
  • 举报
回复
完全可以得到的
<%@ Page Language="C#" %>

<script runat="server">

protected void Button1_Click(object sender, EventArgs e)
{
foreach (Control c in form1.Controls)
{
if (c is HtmlGenericControl)
Response.Write("<li>" + c.ClientID);
}
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
</head>
<body>
<form id="form1" runat="server">
<div id="t">
<ul>
<h2 class="drawer-handle">
系统设置 </h>
<li id="l_qxgl" runat="server"><a id="qxgl" title="权限管理" href="#">权限管理 </a></li>
<li id="l_rywh" runat="server"><a id="rywh" title="人员维护" href="#">人员维护 </a></li>
<li id="l_bmwh" runat="server"><a id="bmwh" title="部门维护" href="#">部门维护 </a></li>
<li id="l_shlcsz" runat="server"><a id="shlcsz" title="审核流程设置" href="#">审核流程设置 </a>
</li>
<li id="l_gsgl" runat="server"><a title="公司管理" href="#">公司管理 </a></li>
</ul>
</div>
<asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />
</form>
</body>
</html>
liujie2715 2010-11-16
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 zx75991 的回复:]
前台:

HTML code

<li id= "l_qxgl " runat= "server " Visible='<%= GetPower() %>'>



后台写个公用方法:

C# code

public bool GetPower()
{
// your code 处理完后返回true或者false
}
[/Quote]
<%=GetPower()%> 不是 Boolean 的有效值。视乎不能这样绑定.. 对了,忘说了我的开发工具是2003视乎不支持这样...囧..囧..
liujie2715 2010-11-16
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 moudy 的回复:]
//具体Page.Controls数组是第几个包含根据你自己的页面来试,下面在我本地调试可行

int nPageControls = Page.Controls.Count;
for (int i = 0; i < nPageControls; i++)
{
foreach (System.Web.UI.Control control in Page.Controls[3]……
[/Quote]
Controls[3]这里的3并不是说我要取的就是第三个控件的ID,这只是我测试的时候方便自己看.
moudy 2010-11-16
  • 打赏
  • 举报
回复
//具体Page.Controls数组是第几个包含根据你自己的页面来试,下面在我本地调试可行

int nPageControls = Page.Controls.Count;
for (int i = 0; i < nPageControls; i++)
{
foreach (System.Web.UI.Control control in Page.Controls[3].Controls)
{
if(control.GetType() == typeof(System.Web.UI.HtmlControls.HtmlGenericControl))
{

this.Label1.Text = control.ID.ToString();
}
}
}
天下在我心 2010-11-16
  • 打赏
  • 举报
回复
前台:

<li id= "l_qxgl " runat= "server " Visible='<%= GetPower() %>'>


后台写个公用方法:

public bool GetPower()
{
// your code 处理完后返回true或者false
}
liujie2715 2010-11-16
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 rock870210 的回复:]
加上runat="server"属性后,后台可以直接使用l_bmwh这些ID的呀
[/Quote]
我要做的这个功能是根据数据库的权限去动态控制<li>标记的显示和隐藏.. 你不能叫我一个一个写死吧..
select * from utb_qx_menu a left join ust_menu b on a.menuid=b.id where a.staff_id=767 and b.pagename='"+control.ID+"' ";//查询数据库是否有权限
utb_qx_menu是权限表,有staff_id(人员ID)和Menuid(页面ID)两个用到的主要字段.
ust_menu是页面表,主要字段有Menuid(主键)Code(页面地址../../lims/SystemManage/YsEdit.aspx等等)pagename(标记ID,就是我上面的<li>标记的ID)三个用到的主要字段
zoeforever 2010-11-16
  • 打赏
  • 举报
回复
还有Id属性改为ClientID属性
天下在我心 2010-11-16
  • 打赏
  • 举报
回复
执行程序后,看下源文件,li变成了什么。
然后用document.getElementsByTagName(你源文件中看到的类型),在遍历经过特殊属性取得这个li
zoeforever 2010-11-16
  • 打赏
  • 举报
回复

int nPageControls = Page.Controls.Count;
for (int i = 0; i < nPageControls; i++)
{
foreach (System.Web.UI.Control control in Page.Controls[i].Controls)
{
this.Label1.Text=control.ID.ToString();
}
}

把4改为i
qq346127416 2010-11-16
  • 打赏
  • 举报
回复
你取这些id做什么用的 runat="server"可以直接在后台调用了
Rock870210 2010-11-16
  • 打赏
  • 举报
回复
加上runat="server"属性后,后台可以直接使用l_bmwh这些ID的呀

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧