从GridView中删除空行而不进行数据库连接

时间:2013-08-27 15:48:57

标签: c# asp.net gridview header-row

我有一个GridView,其中我在各个点添加了额外的HeaderRows,以给GridView提供不同部分的错觉。我遇到的问题是,当我执行回发时,我创建的HeaderRows变成空白行。我能够再次添加额外的HeaderRows但我接着面临空白行“将”数据“碰撞”到不正确的“部分”的问题。

我想做的是,在回发时,调用一个运行在GridView中的函数并删除空行/旧HeaderRows,然后调用首先添加HeaderRows的函数。

我需要帮助删除行的功能。我现在用于该功能的代码是:

protected void removeBlankRows()
{
    foreach (GridViewRow row in GridView1.Rows)
    {
        if (row.Cells[6].Text == "")
        {
            //-->code to remove blank row here<--
        }
    }
} 

3 个答案:

答案 0 :(得分:0)

protected void removeBlankRows()
{
    for (int i = 0; i < GridView1.Rows.Count; i++)
            {
                if (GridView1.Rows[i].RowType == DataControlRowType.DataRow)
                {
                    string strtrial = Convert.Tostring(row.Cells[6].Text);
                     if(string.IsNullOrEmpty(strtrial ))
                     GridView1.DeleteRow(i);
                }
            }

但是,如果您在Rowbound事件中删除这些行会更好。

答案 1 :(得分:0)

var blanks = GridView1.Rows
    .Where( e => string.IsNullOrEmpty(e.Cells[6].Text))
    .Select(e => e.RowIndex);

foreach(var blank in blanks)
    GridView1.DeleteRow(blank);

答案 2 :(得分:0)

为什么不隐藏行?

private void GridView_RowDataBound(Object sender, GridViewRowEventArgs e)
 {
    if (e.Row.Cells[6].Text == "") 
        e.Row.Visible = false;
 }

另外,为什么不隐藏数据绑定事件的记录而不是遍历行?