从后面的代码显示表

时间:2014-10-07 14:49:38

标签: c# html asp.net

我的程序中有一个函数可以打印一个由表格组成的字符串。

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()函数中的字符串打印到屏幕上?

2 个答案:

答案 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>"