我正在研究数据访问层和存储过程。我创建了一个“获取”类来从数据库表“car”中检索数据并将其显示在HTML表上。为此,我做了一个名为“fetching”的方法。在这里,我使用ArrayList但它不起作用。当我运行我的应用程序时,它会在HTML表的每一列中显示以下内容。
'System.Collections.ArrayList'
这是我的存储过程:
create proc sp_experiment
as
select Id, car name, engine number,nameplate from car
这是我的“fetch”类,它有一个名为“fetching”的方法
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data;
using System.Data.SqlClient;
using System.Collections;
public class fetch
{
private static SqlCommand cmd;
private static SqlDataReader sdr;
private static ArrayList ht;
public static ArrayList fetching()
{
using (cmd = new SqlCommand())
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "sp_experiment";
cmd.Connection = getconnected.getconnection();
using (sdr = null)
{
using (sdr = cmd.ExecuteReader())
{
ht = new ArrayList();
while (sdr.Read())
{
ht.Add(sdr[0].ToString());
ht.Add(sdr[1].ToString());
ht.Add(sdr[2].ToString());
ht.Add(sdr[3].ToString());
}
}
return ht;
}
}
}
这是我的HTML表格代码:
<form id="formlist" runat="server">
<table class="col-lg-12 col-md-12">
<tr>
<td>
<table id="itemPlaceholderContainer" runat="server" class="table table-striped table-bordered table-hover">
<tr>
<th> ID</th>
<th>Car Name</th>
<th>Engine Number</th>
<th>Name Plate</th>
</tr>
<tr runat="server" id="exp">
<td runat="server" id="carid"></td>
<td runat="server" id="name"></td>
<td runat="server" id="carengineno"></td>
<td runat="server" id="carnameplate"></td>
</tr>
</table>
</td>
</tr>
</table>
</form>
这是我的HTML表格的后端代码:
using System;
using System.Collections;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Web.UI.Adapters;
public partial class carlist : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
carid.InnerText = fetch.fetching().ToString();
name.InnerText = fetch.fetching().ToString();
carengineno.InnerText = fetch.fetching().ToString();
carnameplate.InnerText = fetch.fetching().ToString();
}
}
答案 0 :(得分:2)
以下是如何绑定List<class>
并以表格格式获取数据的2个示例。在此代码段中,我使用了[GridView][1]
和[Repeater][1]
。当然有更多的解决方案。
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false">
<Columns>
<asp:BoundField DataField="id" HeaderText="ID" />
<asp:BoundField DataField="name" HeaderText="Car Name" />
<asp:TemplateField HeaderText="Engine Number">
<ItemTemplate>
<%# Eval("engine") %>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Name Plate">
<ItemTemplate>
<%# Eval("plate") %>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<table>
<tr>
<th>ID</th>
<th>Car Name</th>
<th>Engine Number</th>
<th>Name Plate</th>
</tr>
<asp:Repeater ID="Repeater1" runat="server">
<ItemTemplate>
<tr id="exp">
<td><%# Eval("id") %></td>
<td><%# Eval("name") %></td>
<td><%# Eval("engine") %></td>
<td><%# Eval("plate") %></td>
</tr>
</ItemTemplate>
</asp:Repeater>
</table>
在代码背后
protected void Page_Load(object sender, EventArgs e)
{
List<Car> cars = new List<Car>();
for (int i = 0; i < 10; i++)
{
Car car = new Car();
car.id = i;
car.name = "Name " + i;
car.engine = "Engine " + i;
car.plate = "Plate " + i;
cars.Add(car);
}
GridView1.DataSource = cars;
GridView1.DataBind();
Repeater1.DataSource = cars;
Repeater1.DataBind();
}
class Car
{
public int id { get; set; }
public string name { get; set; }
public string engine { get; set; }
public string plate { get; set; }
}
您还可以将数据源直接绑定到Control
SqlDataSource source = new SqlDataSource();
source.ConnectionString = Common.connectionString;
source.SelectCommand = "SELECT TOP 10 * FROM myTable";
GridView1.DataSource = source;
GridView1.DataBind();