0

我使用 C# Table 在 aspx 页面中显示 HTML Table。我想从该表中删除列。

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]);
   }
4

3 回答 3

2

这条线不应该

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

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

于 2013-08-06T11:42:55.287 回答
0

您必须在 if 中包含 forloop,并在 if 语句中使用类似于 viewstate[X]=1 的变量,然后检查

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

在 For 循环集结束后运行 for 循环viewstate[X]=0

这样您就可以只运行一次 for 循环,否则它将遍历每一行。

于 2013-08-06T12:16:38.797 回答
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);
于 2013-08-06T12:54:43.157 回答