2013-08-27 108 views
1

我有一個GridView,我在其中添加了額外的HeaderRows以給出GridView的不同部分的錯覺。我遇到的問題是,當我執行回發時,我創建的HeaderRow變爲空白行。我可以再次添加額外的HeaderRows,但是隨後我面臨空白行將數據「碰撞」到不正確的「部分」的問題。從GridView中刪除空白行,無數據庫連接

我想要做的是在回發函數中調用一個通過GridView運行並刪除空白行/舊HeaderRows的函數,然後調用首先添加HeaderRows的函數。

我需要幫助刪除行的功能。我現在所擁有的該函數的代碼是:

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

您想刪除的空行是否始終位於索引6? –

回答

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事件的行。

+0

我建議不要在迭代時修改集合。即使它在這種情況下起作用,當你陷入這種習慣時,你也會遇到麻煩。 – priehl

+0

@priehl我會聽取建議,但請您詳細說明一下,我現在想到的是併發事務,這似乎不會成爲問題(我是對嗎?)。一個好的提示總是歡迎,謝謝! –

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); 
0

爲什麼不只是隱藏這一行?

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

此外,爲什麼你不隱藏你的記錄數據綁定事件,而不是遍歷行?