将SQL Server数据从c#显示到html页面

本文关键字:显示 html 页面 SQL Server 数据 | 更新日期: 2023-09-27 18:22:21

我需要制作一个网站,从SQL Server中提取数据并将其显示在网站上,它是在asp.net空的web应用程序上设置的,页面是web表单,因此此代码在.cs页面中。

如何在.aspx页面的数据上显示此信息??

private List<Course> GetCourses()
{
    var dataTable = new DataTable();
    using (var sqlConnection = new SqlConnection("Data Source=localhost;Initial Catalog=tafe_work;Integrated Security=True"))
    {
        sqlConnection.Open();
        using (var sqlCommand = new SqlCommand("select * from Course", sqlConnection))
        {
            using (var sqlReader = sqlCommand.ExecuteReader())
            {
                dataTable.Load(sqlReader);
            }
        }
    }
    var courses = new List<Course>();
    foreach (DataRow dataRow in dataTable.Rows)
    {
        var course = new Course() {
            ID = (int)dataRow["Course_ID"],
            Name = (string)dataRow["Name"]
        };
        courses.Add(course);
    }
    return courses;
}
public class Course
{
    public int ID { get; set; }
    public string Name { get; set; }
}

将SQL Server数据从c#显示到html页面

您的问题有很多解决方案如果你想在网格中显示你的数据,那么Rjv的答案是最好的但如果你想在html或设计中进行自定义,那么你必须使用asp.net Repeater控件。对于中继器控制,请遵循此链接中继器它也是数据绑定控制

aspx代码将是

<asp:Repeater ID="RptCourse" runat="server">
        <HeaderTemplate>
            <table>
                <tr>
                    <th>ID </th>
                    <th>Name</th>
                </tr>
        </HeaderTemplate>
        <ItemTemplate>
            <tr>
                <td>
                    <asp:Label runat="server" ID="Label1"
                        Text='<%# Eval("ID") %>' />
                </td>
                <td >
                    <asp:Label runat="server" ID="Label2"
                        Text='<%# Eval("Name") %>' />
                </td>
            </tr>
        </ItemTemplate>
        <AlternatingItemTemplate>
            <tr>
                <td>
                    <asp:Label runat="server" ID="Label1"
                        Text='<%# Eval("ID") %>' />
                </td>
                <td >
                    <asp:Label runat="server" ID="Label2"
                        Text='<%# Eval("Name") %>' />
                </td>
            </tr>
        </AlternatingItemTemplate>
        <FooterTemplate>
            </table>
        </FooterTemplate>
    </asp:Repeater>

你的aspx.cs代码将是

        protected void Page_Load(object sender, EventArgs e)
    {
        RptCourse.DataSource = GetCourses();
        RptCourse.DataBind();
    }
    private List<Course> GetCourses()
    {
        var dataTable = new DataTable();
        using (var sqlConnection = new SqlConnection("Data Source=localhost;Initial Catalog=tafe_work;Integrated Security=True"))
        {
            sqlConnection.Open();
            using (var sqlCommand = new SqlCommand("select * from Course", sqlConnection))
            {
                using (var sqlReader = sqlCommand.ExecuteReader())
                {
                    dataTable.Load(sqlReader);
                }
            }
        }
        var courses = new List<Course>();
        foreach (DataRow dataRow in dataTable.Rows)
        {
            var course = new Course()
            {
                ID = (int)dataRow["Course_ID"],
                Name = (string)dataRow["Name"]
            };
            courses.Add(course);
        }
        return courses;
    }
}
public class Course
{
    public int ID { get; set; }
    public string Name { get; set; }
}

如果没有必要,不要双重处理数据。Asp.net提供了许多数据控件。所有这些控件都可以直接绑定到数据表,因此不需要遍历表来创建对象列表。如果必须的话,你也可以绑定到一个对象列表。

您可以在VisualStudio工具箱中找到数据控件,并将它们直接拖动到.aspx页面。

您需要确定您最需要的控制套件。GridView&DataList使用HTML表,其中Repeater使用您定义的结构。

Gridview可能是实现这一目标的快捷方式。将其中一个拖到你的.aspx页面上,并给它一个ID,比如grdCourses

在你的.cs页面中设置类似的内容

private void bindCourses()
{
    var dataTable = new DataTable();
   using (var sqlConnection = new SqlConnection("Data Source=localhost;Initial Catalog=tafe_work;Integrated Security=True"))
{
    sqlConnection.Open();
    using (var sqlCommand = new SqlCommand("select * from Course", sqlConnection))
    {
        using (var sqlReader = sqlCommand.ExecuteReader())
        {
            dataTable.Load(sqlReader);
            grdCourses.DataSource = dataTable;
            grdCourses.DataBind();
        }
    }
  }
}

protected void Page_Load(object sender, EventArgs e)
{
   if(!isPostBack)
   {
       bindCourses();
   }
}

我提到GridView是最快的,这对这个演示来说很好,但回避你真正需要的东西,你真的需要一个表,还是一个列表更好?

此外,内置的数据控件非常强大,对它们的功能有很大的深度。如果你在谷歌上搜索:"databind asp.net controls",你应该能够找到大量的教程来帮助你。

您需要带一个GridView控件。这是最好的控制。

http://msdn.microsoft.com/en-us/library/aa479342.aspx

你可以这样设置数据源:

GridView1.DataSource = list
GridView1.DataBind()

其他可用的控件有:DataList、Repeater、DataList等

GridView控件添加到aspx页面。按照以下将您的收藏绑定到GridView

List<Course> coll = GetCourses();
courseGridView.DataSource = coll;
courseGridView.DataBind()

在aspx文件中,将gridview添加为

<asp:GridView id="courseGridView" runat="server" />