2013-05-04 40 views
0

我正在尝试使用MS Visual Studio 2010在ASP.NET中的列表框中显示的购物车中格式化项目。该程序将每个项目的元素显示为串联字符串,但它的作用是不如我想要的优雅。在ASP.net中嵌入HTML

的cartItem类内我的显示功能是:

公共功能显示()作为字符串 返回Product.ProductName & “;” & Product.ProductID & “(” + Quantity.ToString()&“在 “& FormatCurrency(Product.UnitPrice)&” 每个)“ 端功能

有人告诉我, ”嵌入HTML格式的字符串。添加一个表格,TRS和TDS和CSS“。我在W3School中查找了“嵌入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

回答

1

您可以创建一个用户控件并实现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>"); 
    } 
} 

现在将此用户控件放在aspx页面中,例如可以在div或td中。请记住,如果你是在一个单独的程序创建该用户控件是指,在使用“注册大会”

<div> 
    <ProductGrid Width="100%" ID="ProductGrid1" runat="server" /> 
</div> 

的aspxpage并设置数据源在Page_Load中

ProductGrid1.DataSource = ??? ; //from where you get List<Product>