处理GridView数据源(DataTable)为空行(转)

///
    /// 绑定GridView
    ///

private void BindGridView()
    {
        DataTable dt = RunQuery(string.Format("Select NodeValue, NodeText From TreeViewTable where 1 > 2")).Tables[0];

        if (dt.Rows.Count == 0)
        {
            //生成DataRow对象
            DataRow row = dt.NewRow();

            foreach (DataColumn column in dt.Columns)
            {
                //重新设置AllowDBNull属性
                column.AllowDBNull = true;
                //显式赋值成null
                row[column] = DBNull.Value;
            }
            //将DataRow对象添加至table中
            dt.Rows.Add(row);
        }
       
        this.GridView1.DataSource = dt.DefaultView;
        this.GridView1.DataBind();
    }

protected void GridView1_DataBound(object sender, EventArgs e)
    {
        //如果是空行,判断条件为:行数=1且主键列=DBNull.Value,如果需要区分是初始化/提交状态,可以加入 Page.IsPostBack 判断
        if (GridView1.DataKeys.Count == 1 && GridView1.DataKeys[0].Values[0] == DBNull.Value)
        {
            //清除掉该空行的全部单元格
            GridView1.Rows[0].Cells.Clear();
            //新建单元格对象
            TableCell cell = new TableCell();
            //合并单元格
            cell.ColumnSpan = GridView1.Columns.Count;

            this.GridView1.EmptyDataText = "没有查找到符合条件的记录";

            //设置单元格内容为GridView1.EmptyDataText,把提示文本给分离出来
            cell.Text = GridView1.EmptyDataText;
            //向空行中加入单元格
            GridView1.Rows[0].Cells.Add(cell);
            //让该行应用EmptyDataRowStyle样式,这样可以更加灵活,比如可以很容易的应用主题
            GridView1.Rows[0].ApplyStyle(GridView1.EmptyDataRowStyle);
        }
    }

注意:要设置GridView的DataKeyNames

 

转载于:https://www.cnblogs.com/EddyPeng/archive/2012/08/14/1225878.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值