2013-08-06 54 views
0

我已經使用C#Table在aspx頁面中顯示HTML Table。我想從該表中刪除列。從每個TableRow中刪除TableCell c#

DataTable getTxnOutput = // Get DataTable by Calling Stored Procedure; 
Table txnOutputs = Generix.convertDataTable2HTMLTable(getTxnOutput); 

foreach (TableRow trOutput in txnOutputs.Rows) 
{ 
    if (trOutput.TableSection == TableRowSection.TableBody) 
    { 
    /* Here i am doing some operation using column which i want to delete afterwards   */  
    txnOutputs.Rows[0].Cells.Remove(trOutput.Cells[6]); //Now delete that column 
    } 
} 
Page.Controls.Add(txnOutputs); 

但上面的代碼只會在第一行刪除單元格。 如何在不使用更多循環的情況下刪除每一行。

我找到了解決辦法,但我可以在上面的循環包含相同的...我只是想避免兩個循環..

for (int k = 0; k < txnOutputs.Rows.Count; k++) 
    { 
    txnOutputs.Rows[k].Cells.Remove(txnOutputs.Rows[k].Cells[6]); 
    } 

回答

2

不應該在該行

txnOutputs.Rows[0].Cells.Remove(trOutput.Cells[6]);

be

trOutput.Cells.Remove(trOutput.Cells[6]);

+0

給出No..It錯誤'「System.Web.UI.WebControls.Table」不包含一個定義爲「細胞」和沒有擴展方法「細胞」接受第一類型'System.Web.UI.WebControls.Table'的參數可以被找到' – Shaggy

+0

@SagarDumbre:考慮到'trOutput'類型爲'TableRow',這怎麼可能? – shahkalpesh

0

您將有包括內如果for循環,並使用一個變量類似的ViewState [X] = 1裏面的if語句,以及爲循環設置viewstate[X]=0結束後檢查

if(viewstate[X]==1) 
{ 
    // logic here 
} 
viewstate[X]=0; 

運行for循環

這樣你就只能運行一次循環,否則它會遍歷每一行。

0

嘗試這種情況:

DataTable getTxnOutput = // Get DataTable by Calling Stored Procedure; 
    Table txnOutputs = Generix.convertDataTable2HTMLTable(getTxnOutput); 
    int i = 0; 
    foreach (TableRow trOutput in txnOutputs.Rows) 
    { 
     if (trOutput.TableSection == TableRowSection.TableBody) 
     { 
     /* Here i am doing some operation using column which i want to delete afterwards   */  
     txnOutputs.Rows[i].Cells.Remove(trOutput.Cells[6]); //Now delete that column 
     } 
     i++; 
    } 
    Page.Controls.Add(txnOutputs);