首先,新加入一个类:GenericItem.csusing System;using System.Web;using System.Data;using System.Web.UI;using System.Web.UI.WebControls;public class GenericItem : ITemplate{    private string column;    public GenericItem(string column)    {        this.column = column;    }    public void InstantiateIn(Control container)    {        TextBox txt = new TextBox();        txt.DataBinding += new EventHandler(this.BindData);        container.Controls.Add(txt);    }    public void BindData(object sender, EventArgs e)    {        TextBox txt = (TextBox)sender;        DataGridItem container = (DataGridItem)txt.NamingContainer;        txt.Text = ((DataRowView)container.DataItem)[column].ToString();    }}然后,在一个WebForm中加入一个DataGrid,ID为DataGrid1再然后,在.aspx.cs中加入以下代码:private void Page_Load(object sender, System.EventArgs e){    SqlConnection conn = new SqlConnection("server=icyer;uid=sa;pwd=;database=pubs;");    conn.Open();    SqlDataAdapter da = new SqlDataAdapter("select au_id, au_lname, au_fname from authors order by au_id", conn);    DataSet ds = new DataSet();    da.Fill(ds);    TemplateColumn tc = new TemplateColumn();    tc.ItemTemplate = new GenericItem("au_id");    DataGrid1.Columns.Add(tc);    DataGrid1.DataSource = ds;    if (!Page.IsPostBack)    {        DataGrid1.DataBind();    }}

解决方案 »

  1.   

    tc.ItemTemplate = new GenericItem("au_id");
    这里是自动生成了一列au_id
    但设置了DataGrid1.DataSource = ds后,其他各列还是显示出来了,能不能只显示我自动生成的那一列,不显示其他的列
    同时,可不可以控制DataGrid的显示样式?如自动生成列的标题栏?
      

  2.   

    去掉模板列的<HeaderTemplate>分航段
    </HeaderTemplate>然后在后台写 
    MyDataGrid.Columns[i].HeaderText="你想要的文字"其实你只是改了一下题头,但呈现给用户的是不同的内容