日期:2014-05-18  浏览次数:20566 次

再问在asp.net中使用datagrid的问题
在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;

        我又想这样做会不会把那些标题列去掉。望大虾们指教。

------解决方案--------------------
sf