ASP.NET批量操作基于原生html标签的无序列表的三种方法

在网页开发中,经常要用到无序列表。事实上在符合W3C标准的div+css布局中,无序列表被大量使用,ASP.NET虽然内置了BulletedList控件,用于创建和操作无序列表,但感觉不太好用。本篇介绍服务器端ASP.NET批量操作基于原生html标签的无序列表的三种方法。

方法一,将li元素做成html控件,加上id,用FindControl方法。

aspx代码:

<form id="form1" runat="server">
<ul>
<li id="li1" runat="server">初始值1</li>
<li id="li2" runat="server">初始值2</li>
<li id="li3" runat="server">初始值3</li>
<li id="li4" runat="server">初始值4</li>
<li id="li5" runat="server">初始值5</li>
<li id="li6" runat="server">初始值6</li>
<li id="li7" runat="server">初始值7</li>
<li id="li8" runat="server">初始值8</li>
</ul>
<asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" />
</form>

aspx.cs代码:

protected void Button1_Click(object sender, EventArgs e)
{
//单击按钮后批量改变li元素的内联文本值及样式
for (int i = 1; i <= 8; i++)
{
HtmlGenericControl li = this.FindControl("li" + i) as HtmlGenericControl;
li.InnerHtml = "新值" + i.ToString();
li.Attributes.CssStyle.Value = "color:red";
}
}

方法二,将ul、li元素做成html控件,用ul控件的Controls集合遍历。

aspx代码:

<form id="form1" runat="server">
<ul id="ul1" runat="server">
<li runat="server">初始值1</li>
<li runat="server">初始值2</li>
<li runat="server">初始值3</li>
<li runat="server">初始值4</li>
<li runat="server">初始值5</li>
<li runat="server">初始值6</li>
<li runat="server">初始值7</li>
<li runat="server">初始值8</li>
</ul>
<asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />
</form>

aspx.cs代码:

private int counter = 1;
protected void Button1_Click(object sender, EventArgs e)
{
//单击按钮后批量改变li元素的内联文本值及样式
foreach (Control control in ul1.Controls)
{
if (control is HtmlGenericControl)
{
HtmlGenericControl li = control as HtmlGenericControl;
li.InnerHtml = "新值" + (counter++).ToString();
li.Attributes.CssStyle.Value = "color:red";
}
}
}

方法三,利用HtmlAgilityPack,对元素以Dom方式操作。

aspx代码:

<form id="form1" runat="server">
<ul id="ul1" runat="server">
<li>初始值1</li>
<li>初始值2</li>
<li>初始值3</li>
<li>初始值4</li>
<li>初始值5</li>
<li>初始值6</li>
<li>初始值7</li>
<li>初始值8</li>
</ul>
<asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />
<asp:Button ID="Button2" runat="server" Text="测试空回发" />
</form>

aspx.cs代码:

protected void Button1_Click(object sender, EventArgs e)
{
//单击按钮后批量改变li元素的内联文本值及样式
HtmlDocument htmlDoc = new HtmlDocument();
htmlDoc.LoadHtml(ul1.InnerHtml);
HtmlNodeCollection lis = htmlDoc.DocumentNode.SelectNodes("li");
for (int i = 0; i < lis.Count; i++)
{
lis[i].InnerHtml = "新值" + (i + 1).ToString();
lis[i].Attributes.Add("style", "color:red");
}
ul1.InnerHtml = htmlDoc.DocumentNode.InnerHtml;
}

以上三种方法各有优缺点,可根据实际情况选用。

(0)

相关推荐

  • ASP.NET C#生成下拉列表树实现代码

    效果图: 代码: 复制代码 代码如下: using System.Data; using System.Web.UI.WebControls; /// <summary> /// 根据DataTable生成下拉列表树 /// </summary> public class DropDownListHelp { private string gridline; private DataTable dt; public DropDownListHelp() { // //TODO: 在

  • asp.net TreeView与XML三步生成列表树

    刚我在做Tree view 绑定时自己摸索了一下,网上有人说TreeView绑定数据源,用什么递归绑定啥的,我不想看了,就自己试着写了一个我是这样做的,如果有什么问题请大神指导,我是菜鸟额..1:页面TreeView 叫tvFunction2:新建 adminFunction.xml 复制代码 代码如下: <?xml version="1.0" encoding="utf-8" ?><functions>  <function name

  • asp.net Ext grid 显示列表

    前台页面:  复制代码 代码如下: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="gridShowTest.aspx.cs" Inherits="ExtPra.gridShowTest" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" &

  • asp.net 自制的单选、多选列表实现代码

    问:为什么要"自制"?不是有现成的控件吗? 答:在ASP.NET的页面上,ListBox最终是渲染成select元素,而CheckListBox最终被渲染成div或者是table,使得二者的样式无法统一,或者说要统一很麻烦. 解决: 于是,决定干脆自行组合一些元素,实现单选列表.多选列表的统一样式. 首先,无论是单选列表还是多选列表,都用一个有边框的div来做容器: <div class="list"></div> 然后,在这个div中添加数

  • asp.net新闻列表生成静态页之批量和单页生成

    大家都知道,生成静态页的方法有两种,第一种是使用C#在后台硬编码,第二种是读取模板文件,使用字符串代替.总体来讲第一种方法代码量比较大,维护起来有点困难.生成静态页的目的是为了提高用户体验度,加快访问速度. 使用静态页面还有如下好处: 1. 安全:使用静态页面,用户访问的使没有任何操作功能的html页面,可以说从安全性方面大大提高了程序及服务器的安全. 2. 快速:用户访问的是提前生成好的静态页面,使用户对页面的请求瓶颈只受IO的限制而不会有其他方面的影响. 3. 降低服务器,数据库负载:因为用

  • asp.net 下拉列表无级数据绑定实现代码

    复制代码 代码如下: private string toadd = "├".<BR><BR>private void GetArticleCategory(string pid) { SqlConnection conn = new SqlConnection("server=.;database=test;uid=sa;pwd=;"); string sql = "select Articlesgroup_id,Groupname

  • ASP.NET中BulletedList列表控件使用及详解

    BulletedList 控件创建一个无序或有序(编号)的项列表,它们分别呈现为 HTML UL 或 OL 标记.可以指定项.项目符号或编号的外观,可以静态定义列表项或通过将控件绑定到数据来定义列表项,也可以在用户单击项时作出响应. 对于ASP.NET 1.x里要动态显示Bulledted List时,要么自己利用HTML的<ol>或<ul>元素构造,要么就是"杀鸡用牛刀"的动用Repeater来显示.前者过于死板,后者过于Overkill,也许微软听到这种声音

  • ASP.NET中ListView(列表视图)的使用前台绑定附源码

    1.A,运行效果图 1.B,源代码 复制代码 代码如下: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="DropLvw.aspx.cs" Inherits="DropLvw" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "htt

  • ASP.NET对无序列表批量操作的三种方法小结

    本篇介绍服务器端ASP.NET批量操作基于原生html标签的无序列表的三种方法. 方法一,将li元素做成html控件,加上id,用FindControl方法. aspx代码: 复制代码 代码如下: <form id="form1" runat="server"> <ul> <li id="li1" runat="server">初始值1</li> <li id="

  • asp.net 新闻列表样式代码

    新闻列表: 复制代码 代码如下: <div class="news_list"> <asp:Repeater ID="gsxw" runat="server" DataSourceID="GetNewsByType"> <ItemTemplate> <ul> <li><span> <%# Convert.ToDateTime(Eval("N

  • ASP.NET系统关键字及保留字列表整理

    AddHandler Date Integer RaiseEvent AddressOf Declare Let ReadOnly Alias Dir Lib RemoveHandler And Do Like Redim AndAlso Double Long Resume Ansi Elseif Loop Return As Each Me REM Assembly else Mod Select Auto Enum Module Set Byte End MustOverride Shad

随机推荐