使用ID对动态创建的div执行操作

时间:2013-12-06 08:05:50

标签: c# asp.net html dynamic stringbuilder

当我知道使用此代码动态创建的div的ID时,如何执行操作(例如更改文本):

Stringbuilder sb = new Strinbuilder();
sb.AppendLine("<div id='example'>I want to change this text</div>");

//Examples using a literal, placeholder or a lable:

litExample.Text = sb.ToString();

phExample.Text = sb.ToString();

lblExample.Text = sb.ToString();



//Call id example and change "I want to change this text" , to something else.
//How do I do this?

提前致谢。

3 个答案:

答案 0 :(得分:3)

首先确保您已添加以下命名空间:

using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Text;

并在代码中添加以下方法:

  public string RenderControl(Control ctrl)
    {
        StringBuilder sb = new StringBuilder();
        StringWriter tw = new StringWriter(sb);
        HtmlTextWriter hw = new HtmlTextWriter(tw);

        ctrl.RenderControl(hw);
        return sb.ToString();
    }

并将您的代码更改为以下内容:

        //StringBuilder sb = new StringBuilder();
        HtmlGenericControl myDiv = new HtmlGenericControl("div");
        myDiv.InnerText = "I want to change this text";

        //Make sure asp.net does not add any prefix to your Id "example"
        myDiv.ClientIDMode = System.Web.UI.ClientIDMode.Static;
        myDiv.ID = "example";

        //Examples using a literal, placeholder or a lable:

        litExample.Text = RenderControl(myDiv);

        phExample.Text = RenderControl(myDiv);

        lblExample.Text = RenderControl(myDiv);

        //Do Stuff with myDiv as typical control

答案 1 :(得分:2)

当页面已经呈现时,您可能希望使用javascript执行此操作。类似的东西:

document.getElementById('example').innerHTML = 'New text';

如果页面尚未呈现,您可能需要直接在stringbuilder中调整字符串,或者在您使用它的每个实例上调整字符串,或者可能完全使用不同的方法,但是您没有提供足够的信息。你的问题要说些有用的东西。

答案 2 :(得分:1)

只是一件小事,因为你所有的DIV都拥有相同的ID,所以你将在JS上度过一段美好的时光......

您可以通过手动设置ID并在静态上设置 ClientIDMode 来解决问题,以防止Seyed指出的自动创建。

您可以使用自定义CSS类一次选择所有项目。