当我知道用以下代码动态创建的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?
提前谢谢。
首先,请确保添加了以下命名空间:
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
当页面已经呈现时,您可能需要使用javascript来完成此操作。类似于:
document.getElementById('example').innerHTML = 'New text';
如果页面尚未呈现,您可能需要直接在字符串生成器内调整字符串,或者在使用它的每个实例处调整字符串,也可能完全使用不同的方法,但您的问题中没有提供足够的信息来说明任何有用的信息。
只是一件小事,由于所有的div共享相同的ID,您将在JS上度过一段糟糕的时光…
您可以通过手动设置ID并在Static上设置ClientIDMode来解决此问题,以防止Seyed所指出的自动创建。
您可以使用自定义的CSS类来一次选择所有项目。