当我知道使用此代码动态创建的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?
提前致谢。
答案 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类一次选择所有项目。