无法清除ASP.NET中的HTML表

本文关键字:中的 HTML NET ASP 清除 | 更新日期: 2023-09-27 17:53:41

在我的Page Load方法中,我正在用数据填充HTML表。

缺省情况下,该表为空。

<table runat="server" id="categoriesTable">
</table>

在动态创建每个Row之后,我向其添加4个单元格,并为每个单元格提供一个稍后使用的ID。

在创建所有单元格之后,我重新遍历这个表,这样我就可以在每个单元格中添加一个列表<li></li>,这些列表中的数据是从数据库中获取的,这取决于之前给每个单元格的ID。

当我刷新页面时,没有什么问题,但在PostBack 's(点击一些ASP按钮后,或更改下拉列表的选定索引),单元格的数量保持不变,但每个单元格内的列表增加了一倍。

表示,如果我有这个:

Cell1
-Da
-Do
-Di
-Du
Cell2
-Ya
-Yo
Cell3
-Ka
-Ki

在PostBack:

之后
Cell1
-Da
-Do
-Di
-Du
-Da
-Do
-Di
-Du
Cell2
-Ya
-Yo
-Ya
-Yo
Cell3
-Ka
-Ki
-Ka
-Ki
下面是代码,注意 category 是我创建的一个类,它的方法返回一个List<cCategory>
//Load Categories Into the Table
List<cCategory> mainCategoriesList = cCategory.SubCategories(null);
if(mainCategoriesList.Count!=0)
{
    //Categories Available
    HtmlTableRow Row = new HtmlTableRow();
    categoriesTable.Rows.Add(Row);
    HtmlTableCell Cell;
    int cellCounter = 0;
    while(cellCounter<mainCategoriesList.Count)
    {
        if (cellCounter % 4 == 0 && cellCounter!=0)
        {
            //Add a New Row
            Row = new HtmlTableRow();
            categoriesTable.Rows.Add(Row);
        }
        Cell = new HtmlTableCell();
        Cell.InnerHtml = "<a href='"Category.aspx?id=" + mainCategoriesList.ElementAt(cellCounter).CategoryID() + "'">" + mainCategoriesList.ElementAt(cellCounter).Category()+ "</a>";
        Cell.ID = mainCategoriesList.ElementAt(cellCounter).CategoryID();
        Row.Cells.Add(Cell);
        cellCounter++;
    }
    //Now we must add the sub categories
    String subList = "";
    String newContents;
    int counter;
    List<cCategory> subCategoriesList;
    for (int i = 0; i < categoriesTable.Rows.Count; i++)
    {
        //For each Row, go through each Cell
        for (int j = 0; j < categoriesTable.Rows[i].Cells.Count; j++)
        {
            //For Each CELL, get the subCategories
            subCategoriesList = cCategory.SubCategories(categoriesTable.Rows[i].Cells[j].ID);
            counter = 0;
            while (counter < subCategoriesList.Count)
            {
                subList = subList + "<li><a href='"Category.aspx?id=" + subCategoriesList.ElementAt(counter).CategoryID() + "'">" + subCategoriesList.ElementAt(counter).Category() + "</a></li>";
                counter++;
            }
            newContents = "<div class='"subCategoriesList'"><ul>" + subList + "</ul></div>";
            subList = "";
            categoriesTable.Rows[i].Cells[j].InnerHtml = categoriesTable.Rows[i].Cells[j].InnerHtml + newContents;
        }
    }
}

为什么Cell数据翻倍?

无法清除ASP.NET中的HTML表

你有一个IsPostBack()检查在你的Page_Load方法,你正在加载表?我猜不是,行是加倍的,因为他们正在通过ViewState发布回来,你是通过上述代码再次添加它们。

我认为您应该先清理[或删除]categorestable表的数据,然后再进行逻辑处理。