·您现在的位置: 云翼网络 >> 文章中心 >> 网站建设 >> 网站建设开发 >> ASP.NET网站开发 >> ASP.NET对无序列表批量操作的三种方法

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

作者:佚名      ASP.NET网站开发编辑:admin      更新时间:2022-07-23

asp.net对无序列表批量操作的三种方法

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

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

aspx代码:

[html]view plaincopy
  1. <formid="form1"runat="server">
  2. <ul>
  3. <liid="li1"runat="server">初始值1</li>
  4. <liid="li2"runat="server">初始值2</li>
  5. <liid="li3"runat="server">初始值3</li>
  6. <liid="li4"runat="server">初始值4</li>
  7. <liid="li5"runat="server">初始值5</li>
  8. <liid="li6"runat="server">初始值6</li>
  9. <liid="li7"runat="server">初始值7</li>
  10. <liid="li8"runat="server">初始值8</li>
  11. </ul>
  12. <asp:ButtonID="Button1"runat="server"Text="Button"onclick="Button1_Click"/>
  13. </form>

aspx.cs代码:

[csharp]view plaincopy
  1. PRotectedvoidButton1_Click(objectsender,EventArgse)
  2. {
  3. //单击按钮后批量改变li元素的内联文本值及样式
  4. for(inti=1;i<=8;i++)
  5. {
  6. HtmlGenericControlli=this.FindControl("li"+i)asHtmlGenericControl;
  7. li.InnerHtml="新值"+i.ToString();
  8. li.Attributes.CssStyle.Value="color:red";
  9. }
  10. }

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

aspx代码:

[html]view plaincopy
  1. <formid="form1"runat="server">
  2. <ulid="ul1"runat="server">
  3. <lirunat="server">初始值1</li>
  4. <lirunat="server">初始值2</li>
  5. <lirunat="server">初始值3</li>
  6. <lirunat="server">初始值4</li>
  7. <lirunat="server">初始值5</li>
  8. <lirunat="server">初始值6</li>
  9. <lirunat="server">初始值7</li>
  10. <lirunat="server">初始值8</li>
  11. </ul>
  12. <asp:ButtonID="Button1"runat="server"Text="Button"OnClick="Button1_Click"/>
  13. </form>

aspx.cs代码:

[csharp]view plaincopy
  1. privateintcounter=1;
  2. protectedvoidButton1_Click(objectsender,EventArgse)
  3. {
  4. //单击按钮后批量改变li元素的内联文本值及样式
  5. foreach(Controlcontrolinul1.Controls)
  6. {
  7. if(controlisHtmlGenericControl)
  8. {
  9. HtmlGenericControlli=controlasHtmlGenericControl;
  10. li.InnerHtml="新值"+(counter++).ToString();
  11. li.Attributes.CssStyle.Value="color:red";
  12. }
  13. }
  14. }

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

aspx代码:

[html]view plaincopy
  1. <formid="form1"runat="server">
  2. <ulid="ul1"runat="server">
  3. <li>初始值1</li>
  4. <li>初始值2</li>
  5. <li>初始值3</li>
  6. <li>初始值4</li>
  7. <li>初始值5</li>
  8. <li>初始值6</li>
  9. <li>初始值7</li>
  10. <li>初始值8</li>
  11. </ul>
  12. <asp:ButtonID="Button1"runat="server"Text="Button"OnClick="Button1_Click"/>
  13. <asp:ButtonID="Button2"runat="server"Text="测试空回发"/>
  14. </form>

aspx.cs代码:

[csharp]view plaincopy
  1. protectedvoidButton1_Click(objectsender,EventArgse)
  2. {
  3. //单击按钮后批量改变li元素的内联文本值及样式
  4. HtmlDocumenthtmlDoc=newHtmlDocument();
  5. htmlDoc.LoaDHTML(ul1.InnerHtml);
  6. HtmlNodeCollectionlis=htmlDoc.DocumentNode.SelectNodes("li");
  7. for(inti=0;i<lis.Count;i++)
  8. {
  9. lis[i].InnerHtml="新值"+(i+1).ToString();
  10. lis[i].Attributes.Add("style","color:red");
  11. }
  12. ul1.InnerHtml=htmlDoc.DocumentNode.InnerHtml;
  13. }

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