ASP.net问题与更改表行可见性

时间:2011-01-18 08:46:26

标签: asp.net

我有一个从数据查询动态生成的表数组,并存储在会话变量中。现在我想添加一个文本框来限制我将显示的行数。为了测试这个,我编写了两个按钮方法,一个将设置某些行为visible = false,第二个按钮方法将相同的行设置为visible = true。

protected void limit_btn_Click(object sender, EventArgs e)
{
    for (int i = 0; i < traceTables.Length; i++)
        for (int j = 2; j < traceTables[i].Rows.Count; j++)
            traceTables[i].Rows[j].Visible = false;

    Session["Tables"] = traceTables;
    table_C();
}//end limit_btn_Click()

protected void obo_btn_Click(object sender, EventArgs e)
{
    for (int i = 0; i < traceTables.Length; i++)
        for (int j = 2; j < traceTables[i].Rows.Count; j++)
            traceTables[i].Rows[j].Visible = true;

    Session["Tables"] = traceTables;
    table_C();
}//end obo_btn_Click()

protected void table_C()
{
    String changeTo = log_locations.SelectedValue;
    for (int i = 0; i < sshLoc.Length; i++)
    {
        if (sshLoc[i].CompareTo(changeTo) == 0)
        {
            table_panel.ContentTemplateContainer.Controls.Remove(traceTables[currentTable]);
            System.Diagnostics.Debug.WriteLine("Removing " + sshLoc[currentTable]);
            table_panel.ContentTemplateContainer.Controls.Add(traceTables[i]);
            System.Diagnostics.Debug.WriteLine("Adding " + sshLoc[i]);
            currentTable = i;
            Session["CurrentTable"] = currentTable;
            break;
        }//end if
    }//end for
}//end table_C()

table_C()基本上从面板中删除并添加表 - 当我想在下拉列表中切换表时(我的工作)使用它,在这种情况下,它只是从面板内容中删除并添加相同的表容器

问题是将行设置为不可见可以正常工作。将行设置回可见永远不会,我不知道为什么

2 个答案:

答案 0 :(得分:1)

尝试在ASP中使用display:none和display:visible而不是.visible  traceTables [I] .Rows [j]的。新增( “风格”, “显示:无”);

Visible将其从HTML中完全删除,因此您只能通过重新创建页面再次显示它。

答案 1 :(得分:0)

您需要将数据存储在列表中而不是表中。

当您将行设置为不可见时,它们将从html表中删除。这就是为什么你不能再将它们设置为可见的原因。

如果您将数据存储在单独的对象中并将其绑定到列表,则可以打开和关闭可见性。