我需要创建一个从SQL Server中提取数据并在网站上显示数据的网站,它在asp.net空Web应用程序上设置,页面是Web表单,因此此代码位于{{ 1}}页面。
我如何在.cs
页面上的数据上显示这个?
.aspx
答案 0 :(得分:2)
您的问题有很多解决方案 如果你想在网格中显示数据,那么Rjv答案是最好的 但是如果你想在你的html或设计中进行自定义,那么你必须使用asp.net Repeater Control。 对于Repeater Control,请点击此链接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; }
}
答案 1 :(得分:1)
如果您不必,请不要双重处理数据。 Asp.net提供了许多data controls。所有这些控件都可以直接绑定到数据表,因此无需遍历表来创建对象列表。如果你真的需要,你也可以绑定到一个对象列表。
您可以在VisualStudio工具箱中找到数据控件,并将它们直接拖到.aspx页面。
您需要确定最需要的控制套件。 GridView
&amp; 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
是最快的,这对于这个演示来说很好,但是要考虑你真正需要的东西,你真的需要一张桌子,还是列表会更好?
此外,内置的数据控件功能非常强大,并且具有很强的功能。如果你google:&#34; databind asp.net控件&#34;你应该能够找到很多教程来帮助你。
答案 2 :(得分:0)
您需要带一个GridView控件。这是最好的控制。
http://msdn.microsoft.com/en-us/library/aa479342.aspx
您可以像这样设置数据源:
GridView1.DataSource = list
GridView1.DataBind()
其他可用的控件有:DataList,Repeater,DataList等
答案 3 :(得分:0)
在您的aspx页面中添加GridView
控件。将您的收藏绑定到GridView
,如下所示
List<Course> coll = GetCourses();
courseGridView.DataSource = coll;
courseGridView.DataBind()
在aspx文件中,将gridview添加为
<asp:GridView id="courseGridView" runat="server" />