我正在尝试使用MS Visual Studio 2010格式化我在ASP.NET中的列表框中显示的购物车中的项目。程序将每个项目的元素显示为连接字符串,这样可以工作但不如我想要的那么优雅
我在cartItem类中的显示功能是:
Public Function Display()As String 返回Product.ProductName& “;”& Product.ProductID& “,(”+ Quantity.ToString()&“at”& FormatCurrency(Product.UnitPrice)&“each)” 结束功能
我被告知“嵌入HTML来格式化你的字符串。添加一个表,trs和tds以及CSS。”我在W3Schools中查找了“嵌入HTML”并且没有任何看似相关的内容。我的班级教科书里找不到这样的东西。当我尝试插入类似标签的语句时,Visual Studio会将它们转换为和。我尝试将语句放入响应中,如下所示:
Response.Write("<html>")
Response.Write("<table>")
Response.Write("<tr>")
Response.Write("<td>")
Response.Write("<Product.ProductID>")
Response.Write("</td>")
Response.Write("<td>")
Response.Write("<Product.ProductName>")
Response.Write("</td>")
Response.Write("</tr>")
Response.Write("</table>")
但是,我在每一行都收到错误,说“未响应响应。由于其保护级别,可能无法访问”。即使它有效,我也不确定Response.Write是否适合格式化列表框中打印的内容。
我可以尝试使用另一个控件(详细信息视图,表单视图)来显示购物车项目,但我只学会了如何将这些项目绑定到数据库,这些项目都在我的购物车中(cartitemlist类的一个对象,这是一个购物车项目数组,而不是在数据库中。
非常感谢任何帮助。我需要学习这个,所以我不只是在寻找复制的解决方案;我想了解如何做到这一点。先感谢您。 w ^
答案 0 :(得分:1)
您可以创建一个usercontrol并实现RenderContents();
public class ProductGrid : System.Web.UI.WebControls.WebControl
{
public List<Product> DataSource {get; set;}
protected override void RenderContents(HtmlTextWriter output)
{
//here you can iterate through datasource and write the output
output.Write("<html><table>");
foreach(row in this.DataSource)
{
output.Write(String.Format("<td>{0}</td><td>{1}</td></tr>",row.ProductID, row.ProductName));
}
output.Write("</table></html>");
}
}
现在将此usercontrol放在aspx页面中,例如可以在div或td中。请记住,如果要在单独的程序集中创建此用户控件,请参阅aspxpage中的“Register Assembly”
<div>
<ProductGrid Width="100%" ID="ProductGrid1" runat="server" />
</div>
并在Page_Load
中设置数据源ProductGrid1.DataSource = ??? ; //from where you get List<Product>