我正在尝试使用C#.net从数据库中提取数据,并使用Foreach循环使其在页面上可见。每当我运行代码时,我只会得到一个项目,当我知道数据库中至少有7个项目时。我已将下面的代码放在C#中。
SqlConnection oConnection = new SqlConnection(ConfigurationManager.ConnectionStrings["HomeGrownEnergyConnectionString"].ToString());
string sqlEnergy = "Select * from Product p where p.ProductTypeId=3";
SqlCommand oCmd = new SqlCommand(sqlEnergy, oConnection);
DataTable dtenergy = new DataTable();
SqlDataAdapter oDa = new SqlDataAdapter(oCmd);
try
{
oConnection.Open(); ;
oDa.Fill(dtenergy);
}
catch (Exception ex)
{
lblnodata.Text = ex.Message;
return;
}
finally
{
oConnection.Close();
}
DataTableReader results = dtenergy.CreateDataReader();
if (results.HasRows)
{
results.Read();
foreach(DataRow result in dtenergy.Rows)
{
byte[] imgProd = result["ThumnailLocation"] as byte[];
ID.Text = result["ProductID"].ToString();
Name.Text = result["Name"].ToString();
price.Text = FormatPriceColumn(result["Price"].ToString());
}
}
以下是asp.net的代码。
<div>
<asp:Image ID="imgProd" CssClass="ProdImg" runat="server" />
<asp:Label runat="server" ID="ID" />
<asp:Label runat="server" ID="Name" />
<asp:Label runat="server" ID="price" />
<asp:TextBox ID="txtQty" MaxLength="3" runat="server" Width="30px" />
<asp:Button runat="server" ID="Addtocart" Text="Add To Cart" CommandName="AddToCart" ItemStyle-CssClass="btnCol" />
如果有人能帮助我,那将非常感谢。
答案 0 :(得分:1)
您应该将数据库中的图像列类型设置为byte []并使用此tow方法来获取和设置图像:
public BitmapImage ImageFromBuffer(Byte[] bytes)
{
MemoryStream stream = new MemoryStream(bytes);
BitmapImage image = new BitmapImage();
image.BeginInit();
image.StreamSource = stream;
image.EndInit();
return image;
}
public Byte[] BufferFromImage(BitmapImage imageSource)
{
Stream stream = imageSource.StreamSource;
Byte[] buffer = null;
if (stream != null && stream.Length > 0)
{
using (BinaryReader br = new BinaryReader(stream))
{
buffer = br.ReadBytes((Int32)stream.Length);
}
}
return buffer;
}
答案 1 :(得分:0)
我认为你的问题标题应该更像是“如何在我的页面上显示数据库结果集”。
答案是你应该使用数据绑定。这样,您就可以设置数据项在页面上的外观。然后,您可以将一组记录/对象放入此列表(使用它的布局),并且它们都按照布局中的定义进行渲染。
这是一个小例子:
在你的aspx代码中:
<asp:DataList id="dlItems" runat="server">
<ItemTemplate>
<%# Eval("ID") %>
<%# Eval("Name") %>
<%# Eval("price") %>
</ItemTemplate>
</asp:DataList>
在你的cs代码中:
dlItems.DataSource = dtenergy;
dlItems.DataBind();
对于问题的图像部分,请参阅其他主题:Display image from database in ASP.net with C#
有关数据绑定的更多详细信息,请参阅此处:http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.datalist.itemdatabound.aspx