在asp.net中使用datagrid,常规的方法是使用datagrid邦定一个datasource,但这样做的话我不知道初始化datagrid,就是不显示任何记录,只显示标题列。现在我使用的是一个笨办法:就是构造一个查不到任何记录的sql语句,然后查询,再绑定datasource。但是显然这样的查询是多余的。最好的办法是什么呢?    请教了一位大虾,他说可以自己构建一个空数据的DataTable(带字段的),再绑定。具体代码如下:
DataTable dt=new DataTable();
dt.Columns.Add("a");
dt.Columns.Add("b");
dt.Columns.Add("c");
BindNoRecords(DataGrid1,dt);
public void BindNoRecords(DataGrid gridView, DataTable dt)//GridView無數據顯示表頭
    {
        if (dt.Rows.Count == 0)
        {
            dt.Rows.Add(dt.NewRow());
            gridView.DataSource = dt;
            gridView.DataBind();
            int columnCount = gridView.Items[0].Cells.Count;
            gridView.Items[0].Cells.Clear();
            gridView.Items[0].Cells.Add(new TableCell());
            gridView.Items[0].Cells[0].ColumnSpan = columnCount;
            gridView.Items[0].Cells[0].Text = "No data found";
            gridView.ItemStyle.HorizontalAlign = System.Web.UI.WebControls.HorizontalAlign.Center;
        }
    }
    但是现在还有一个问题:就是因为这个datagrid的标题列是动态绑定的,就是怎样把查询到的记录绑定到这个datagrid。就是之前我使用静态列的时候这样做的:
TOracle oDB = new TOracleDB(strSql); // strSql为查询sql语句
DataGrid ResultList.DataSource = oDB.DataSource;
ResultList.DataBind;   不知现在是否可以这样做:
TOracle oDB = new TOracleDB(strSql); 
DataTable dt = oDB.DataSource.Table;
DataGrid ResultList.DataSource = dt;
ResultList.DataBind;    我又想这样做会不会把那些标题列去掉。望大虾们指教。