我使用C#Table在aspx页面中显示HTML表。我想从该表中删除列。
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]);
}
答案 0 :(得分:2)
不应该这一行
txnOutputs.Rows[0].Cells.Remove(trOutput.Cells[6]);
是
trOutput.Cells.Remove(trOutput.Cells[6]);
?
答案 1 :(得分:0)
你必须在if中包含forloop,并在if语句中使用类似于viewstate [X] = 1的变量,并检查
if(viewstate[X]==1)
{
// logic here
}
viewstate[X]=0;
运行循环
在For循环集viewstate[X]=0
这样你只能运行一次循环,否则它将循环遍历每一行。
答案 2 :(得分: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);