2011-09-08 33 views
1

GridViewコントロール内に画像を表示する必要があります。列の作成は動的である必要があります。言い換えれば、列全体の作成はコード内で行う必要があります。Gridview列に画像を表示するには、列を動的に作成する必要があります

多くの投稿はhttp://msdn.microsoft.com/en-us/library/aa479350.aspxを参照しています。問題は、イメージ列が表示されるかどうかを事前にはわからないため、列を動的に作成する必要があることです。また、その記事はまだasp.netバージョン2.0を参照して以来古いかもしれません。私はasp.netバージョン3.5(またはそれ以上)を使用していると信じているvs2010でそれを開発しています

答えて

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

ご回答ありがとうございます。 2つの問題1)動的に作成される列です。実際のGridViewは標準的な方法で修正して作成する必要があります。 2)セル内に画像を表示する必要があります – user935811

+0

1)この例では動的に列を作成します。2)作成する列には、画像を追加するプレースホルダがあります。 –

+0

ありがとうエリック、私はasp.netへの初心者....#2の例がありますか? – user935811

関連する問題