我的程序中有一个函数可以打印一个由表格组成的字符串。
getWhileLoopData(){
string htmlStr = "";
SqlConnection thisConnection = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);
SqlCommand thisCommand = thisConnection.CreateCommand();
thisCommand.CommandText = "SELECT * from events";
thisConnection.Open();
SqlDataReader reader = thisCommand.ExecuteReader();
while (reader.Read()){
int room_id = reader.GetInt32(0);
string title = reader.GetString(1);
htmlStr += "<tr><td>" + title + "</td></tr>";
}
thisConnection.Close();
return htmlStr;
}
在.aspx页面中,我通过<%=getWhileLoopData()%>
调用它。
但问题是当我在page_load(object sender, EventArgs e)
函数中打开页面时,我有类似的东西,它会将表值附加到字符串中。
如何将page_load()函数中的字符串打印到屏幕上?
答案 0 :(得分:1)
如果您希望根据某些数据在网页上放置特定的HTML,则更好的方法是使用现有的.net控件之一,例如:一个链接到DataSource的Repeater。 DataSource可以是数据库,也可以是List(基本上是实现IEnumerable的任何东西)。
或者,您可以通过继承WebControl创建自己的控件,并覆盖渲染事件以呈现HTML。
如果您使用自定义控制路线,您只需执行类似
的操作<%@ Register TagPrefix="XYZ" NameSpace="XYZ.MyControlsNameSpace" Assembly="MyControlsAssembly" %>
然后使用它,
<XYZ:MyNewCustomControl runat="server" SomeProperty="SomeValue" ... />
当aspx引擎遇到XYZ:MyNewCustomControl时,它会在该点将控件插入页面并在页面事件生命周期中运行它,导致它被渲染,导致它的渲染事件被触发,其中所有这些HTML都将被注入页面。
答案 1 :(得分:0)
我认为最好将div作为runat服务器,然后使用你的html代码调用你的函数set innerhtml properties。
<div id="test" runat="server></div>
在codebehinde中
test.innerhtml="<p>Hi</p>"