GRIDVIEW 中当数据行数未满时,填充空白行

来源:互联网 发布:禁用windows update 编辑:程序博客网 时间:2024/06/04 23:20
有这样一种情况,当GRIDVIEW中设定每页显示30行,而实际显示数据只有12行时,剩下的18行就不会显示了,这时GRIDVIEW只显示12行,当是为了让GRIDVIEW控件在用户面前显得好看一些,我们想能不能把剩下的18行用空白行显示出来,我想有一些朋友也在为这个问题犯愁吧。

我想到这里,查了一下MSDN,写出了如下的代码:

 1    public void LoadGrid()
 2    {
 3        AdoSql GridSql = new AdoSql();
 4        DataTable CustmTable = GridSql.GridGetSql("select * from CustmInfo order by CompanyName desc");
 5
 6        for (int i = CustmTable.Rows.Count; i < 30; i++)
 7        {
 8            DataRow TableRow = CustmTable.NewRow();
 9            TableRow[0= DBNull.Value;
10            CustmTable.Rows.Add(TableRow);
11        }

12
13        this.CustmGrid.DataSource = CustmTable;
14        this.CustmGrid.DataBind();
15
16
17    }


需要说明的是,代码中的GridSql.GridGetSql是我写的一个操作数据库的类,以下是操作数据库的类代码。


 1    public DataTable GridGetSql(string SqlStr)
 2    {
 3        OleDbCommand SqlCmd = new OleDbCommand();
 4        SqlCmd.Connection = new OleDbConnection(ConfigurationSettings.AppSettings["OledbConnectionStr"]);
 5        SqlCmd.CommandText = SqlStr;
 6        SqlCmd.CommandType = CommandType.Text;
 7        OleDbDataAdapter SqlAd = new OleDbDataAdapter(SqlCmd);
 8        DataSet Rs = new DataSet();
 9        SqlAd.Fill(Rs);
10        return Rs.Tables[0];
11    }



以上代码是为了方便大家读阅,从我一个项目的代码中粘出来的一部分。

 

有办法让“修改”和“删除”例在空行不显示按钮吗?
我在做的时候没有实现这个功能!希望你能帮助我,
我自己写的代码如下,麻烦你改下,获帮我在另写!谢谢!
protected void GrdDataBind()
{
DataSet dataSet = new dataSet;

dataSet = TanistSoft.Inventory.InventoryBLL.InventoryHouse.GetPagesToDS(nPageSize,

nPageIndex,ref nRecCount);//用于从数据库绑定数据到
//DataSet
if (dataSet.Tables[0].Rows.Count < 5 & nPageIndex >= 1)
{

for (int i = dataSet.Tables[0].Rows.Count ; i < 5; i++)
{
DataRow tableRow = dataSet.Tables[0].NewRow();
tableRow[0] = DBNull.Value;
dataSet.Tables[0].Rows.Add(tableRow);
GrdHouse.Rows[i].FindControl("ImgBtn3").Visible = false;
GrdHouse.Rows[i].FindControl("ImgBtn6").Visible = false;
}//这里没实现隐藏删除按钮和修改按钮
//ImgBtn3和ImgBtn6分别是删除和修改按钮

}
GrdHouse.DataSource = dataSet;
GrdHouse.DataBind();
}

如下示例:

当数据库查询OK后执行以下。
int i_DBNull = 0; //记录空白的行数
if(flagSelAll)
{ //GRIDVIEW 中当数据行数未满时,填充空白行
for (int i =objDS.Tables[0].Rows.Count%i_PageNo; i < i_PageNo;i++ )
{
i_DBNull++;
DataRow TableRow = objDS.Tables[0].NewRow();
TableRow[0] = DBNull.Value;
objDS.Tables[0].Rows.Add(TableRow);
//objDS.Tables[0].Rows[i].
}
GVProductSet.DataSource = objDS;

GVProductSet.DataBind();
//将最后一页的 空白行的控制隐藏.
if (GVProductSet.PageIndex + 1 == GVProductSet.PageCount)
{ //得到空白行
for (int i = i_PageNo - i_DBNull; i < i_PageNo; i++)
{
GVProductSet.Rows[i].FindControl("CheckBoxProductID").Visible = false;
}
}
//分页一定要放在DataBind()后面
Pagination(i_PageNo,objDS,strMessage);
}
//以上代码测试OK
原创粉丝点击