从代码后面显示表格

本文关键字:显示 表格 代码 | 更新日期: 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>"