我有一个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<--
}
}
}
答案 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;
}
另外,为什么不隐藏数据绑定事件的记录而不是遍历行?