2011-09-08 79 views
1

我需要在GridView控件中显示图像。创建列需要是动态的。换句话说,整个列创建需要在代码中完成。在Gridview列中显示图像,需要动态创建列

很多发布是指http://msdn.microsoft.com/en-us/library/aa479350.aspx。问题是我需要动态创建列,因为我不知道图像列是否会显示。此外,该文章可能还是旧的,因为它仍然引用asp.net 2.0版。我正在开发vs2010,我相信使用asp.net版本3.5(或更高版本)

回答

0

如果你想要一个真正动态的网格,那么你可以在代码中构建网格。这有点棘手,但并非不可能。这是一个独立的例子,你可以看看。

<%@ Page Language="C#" AutoEventWireup="true"%> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<script runat="server"> 

    class MyItemTemplate : System.Web.UI.ITemplate 
    { 

     public void InstantiateIn(System.Web.UI.Control container) 
     { 
      Label label = new Label(); 
      label.ID = "MyLabel"; 
      container.Controls.Add(label); 
     } 
    } 

    protected void Page_Load(object sender, EventArgs e) 
    { 
     GridView gv; 
     if (!this.IsPostBack) 
     { 
      gv = new GridView(); 
      gv.AutoGenerateColumns = false; 
      gv.ID = "MyGrid"; 
      var column = new TemplateField(); 
      column.HeaderText = "My Item"; 
      column.ItemTemplate = new MyItemTemplate(); 
      gv.Columns.Add(column); 
      MyDiv.Controls.Add(gv); 
      gv.RowDataBound += new GridViewRowEventHandler(gv_RowDataBound); 
     } 

     var dataSource = new string[] { "a", "b", "c" }; 
     gv = this.Page.FindControl("MyGrid") as GridView; 

     gv.DataSource = dataSource; 
     gv.DataBind(); 
    } 

    void gv_RowDataBound(object sender, GridViewRowEventArgs e) 
    { 
     var label = e.Row.FindControl("MyLabel") as Label; 
     if (label != null) 
      label.Text = ((string)e.Row.DataItem).ToUpper(); 
    } 
</script> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title></title> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <div id="MyDiv" runat="server"> 

    </div> 
    </form> 
</body> 
</html> 
+0

感谢您的回复。两个问题1)这是应该动态创建的列。实际的GridView应该以标准方式修复和创建。 2)我需要在单元格内显示图像 – user935811

+0

1)本示例动态创建列2)您创建的列可以有一个占位符,您可以在其中添加图像。 –

+0

谢谢埃里克,我是asp.net的新手....你有#2的例子吗? – user935811