再问在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