方法;通过增加一新行来实现
主要函数:
public void BuildNoRecords(GridView gridView, DataSet ds)
{
if (ds.Tables[0].Rows.Count == 0)
{
ds.Tables[0].Rows.Add(ds.Tables[0].NewRow());
gridView.DataSource = ds;
gridView.DataBind();
int columnCount = gridView.Rows[0].Cells.Count;
gridView.Rows[0].Cells.Clear();
gridView.Rows[0].Cells.Add(new TableCell());
gridView.Rows[0].Cells[0].ColumnSpan = columnCount;
gridView.Rows[0].Cells[0].Text = "No Records Found.";
}
else
{
gridView.DataSource = ds;
gridView.DataBind();
}
}
方法二:通过在空模板中添加静态表来实现(用html代码)
类似:
<EmptyDataTemplate>
<Table>
<tr>
<td>第一列</td> <td>二列</td>
</tr>
</Table>
</EmptyDataTemplate>
方法三:如果数据源是sqldatasource时(本质上也是用新增行来实现):
GridView1.DataSourceID = ""; //gridview不允许同时指定DataSourceID 和DataSource
GridView1.DataSource = DataSource_PipeLine;// DataSource_PipeLine是sqldatasource的名字
GridView1.DataBind();
//if there is no data found, change the datasource to a empty datasource, so the header will visible
if (GridView1.Rows.Count == 0)
{
//在创建时,我利用了sqldatasource的connect string 和select command,将来改变数据库连接或sql不会影响这段代码
using (System.Data.SqlClient.SqlConnection connect = new System.Data.SqlClient.SqlConnection(DataSource_PipeLine.ConnectionString))
{
connect.Open();
DataTable dt = new DataTable();
System.Data.SqlClient.SqlDataAdapter adpter = new System.Data.SqlClient.SqlDataAdapter(DataSource_PipeLine.SelectCommand, connect);
adpter.Fill(dt);
DataRow dr = dt.NewRow();
dt.Clear();
dt.Rows.Add(dr);
GridView1.DataSource = dt;
GridView1.DataBind();
}
}