从代码后面显示表格
本文关键字:显示 表格 代码 | 更新日期: 2023-09-27 18:25:45
我的程序中有一个函数,它可以将由表组成的字符串打印到页面上。
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()函数中的字符串打印到屏幕上?
如果您有特定的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都将被注入到页面中。
我认为最好在用html代码调用函数集innerhtml属性后,将div作为runat服务器。
<div id="test" runat="server></div>
在码本德
test.innerhtml="<p>Hi</p>"