2014-04-11 111 views
0

我有一個類的列表,我用List的Where子句過濾它。過濾後,我使用foreach循環生成HTML table.It生成項目兩次,即如果列表計數(篩選後)是5,它的生成錶行10次。 我已經檢查,而調試,其正確執行,即4次。 這是我的代碼,在我的aspx我有這樣使用C#列表生成HTML表格

<asp:Table ID="table1" runat="server" CssClass="table"> 
    <asp:TableRow ID="TableRow1" runat="server"> 
     <asp:TableCell ID="TableCell1" runat="server">Name</asp:TableCell> 
     <asp:TableCell ID="TableCell2" runat="server">Age</asp:TableCell> 
     <asp:TableCell ID="TableCell3" runat="server">Sex</asp:TableCell> 
     <asp:TableCell ID="TableCell4" runat="server">City</asp:TableCell> 
     <asp:TableCell ID="TableCell5" runat="server">Delete</asp:TableCell> 
    </asp:TableRow> 
</asp:Table> 


//lstusers is the List of Users Class,which contains information of users. 
foreach (var item in lstusers.Where(r => r.Name == "salman").ToList()) 
{ 


    var namecell = new TableCell(); 
    namecell.Text = item.Name; 

    var agecell = new TableCell(); 
    agecell.Text = item.Age.ToString(); 

    var sexcell = new TableCell(); 
    sexcell.Text = item.Sex; 

    var citycell = new TableCell(); 
    citycell.Text = item.City; 

    var delcell = new TableCell(); 
    delcell.Text = "<a href='#' id='deluser' class='del DeleteBtn'></a>"; 

    var newRow = new TableRow(); 
    newRow.Cells.Add(namecell); 
    newRow.Cells.Add(agecell); 
    newRow.Cells.Add(sexcell); 
    newRow.Cells.Add(citycell); 
    newRow.Cells.Add(delcell); 
    table1.Rows.Add(newRow); 
} 

表控制我哪裏做錯了,我自己也嘗試lstusers.Where(r =>r.Name== "salman"),但與以及

+0

您可以使用GridView或Repeater控制器,並通過數據綁定更輕鬆地完成此操作。 – Esko

+0

是的,但我必須使用這個 –

+0

你在哪裏調用這個代碼?我的意思是它在Page_Load事件或按鈕點擊事件中或在哪裏?你能向我們展示這些代碼嗎? – samar

回答

1

同樣的問題,根據我的觀點。查看,您應該先清除表格行,然後插入新行。添加

table1.Rows.Clear();之前foreach循環。