【问题标题】:Populating HtmlTable Control with HtmlTable object in ASP/C#在 ASP/C# 中使用 HtmlTable 对象填充 HtmlTable 控件
【发布时间】:2010-06-22 23:11:04
【问题描述】:

这显然不是一个不可能的问题,但我找不到一种方法来使用已填充数据的 HtmlTable 对象填充 HtmlTable 控件(可从代码隐藏访问)。

有人可以帮我吗??

问候,

编辑

在 ASP 页面中,我有一个 ID="table1" 的 HTML 表格

在代码隐藏中,我首先从 List 中填充一个 HtmlTable 对象,如下所示:

HtmlTable localTable1 = new HtmlTable();
HtmlTableCell cell1 = new HtmlTableCell();
HtmlTableCell cell2 = new HtmlTableCell();

foreach (Evaluation eval in theEvaluations)
{
    HtmlTableRow anEvaluation = new HtmlTableRow();

    cell1.InnerText = eval.attr1;
    anEvaluation.Cells.Add(cell1);

    cell2.InnerText = eval.attr2;
    anEvaluation.Cells.Add(cell2);

    localTable1.Rows.Add(anEvaluation);
}

// And eventually here I should pass the localTable1 to table1

【问题讨论】:

  • 您能否发布一些代码,以便我们更好地了解您要做什么?
  • 能否请您展示一些代码,以便我们了解您拥有什么以及您是如何尝试的?
  • 当然!!见下面的代码sn-p
  • 通常你编辑你的问题并在那里添加代码......通常:)

标签: c# asp.net html


【解决方案1】:

听起来你有一张桌子,你正在尝试做类似的事情

HtmlTable myTable = new HtmlTable();
this.myPageTable = myTable;

这不是它的工作原理。如果您有一个要渲染的填充表对象,则创建一个文字控件并访问它的 Controls 集合 Add() 方法并添加表对象。像这样:

HtmlTable myTable = new HtmlTable();
this.myLiteral.Controls.Add(myTable);

或者你应该直接填充表格。

【讨论】:

  • 谢谢斯宾塞,但问题是我已经在我的 ASP 页面中设置了一个精确的表格框架(其中指定了标题 ),我只想在下面添加行
  • 然后你需要访问表对象的行集合并创建新的 HtmlTableRow() 对象而不是一个全新的表。
  • 好的,这就是我现在要做的,它会在我的 ASP 表中添加一行,但总是并且只有我的源列表的最后一条记录(包含 2 个元素)...
【解决方案2】:

您是否使用

标签来创建表格?如果是这样,您应该使用
标记,这样您就可以从代码隐藏中访问表格。

【讨论】:

    【解决方案3】:

    如果可能的话,更好的解决方案是将 HtmlTable 从页面传递到填充它的任何函数。

    【讨论】:

      【解决方案4】:

      在 ASP 页面中,我有一个 ID="table1" 的 HTML 表格

      在代码隐藏中,我首先从 List 中填充一个 HtmlTable 对象,如下所示:

      HtmlTable localTable1 = new HtmlTable();
      HtmlTableCell cell1 = new HtmlTableCell();
      HtmlTableCell cell2 = new HtmlTableCell();
      
      foreach (Evaluation eval in theEvaluations)
      {
          HtmlTableRow anEvaluation = new HtmlTableRow();`
      
          cell1.InnerText = eval.attr1;
          anEvaluation.Cells.Add(cell1);
      
          cell1.InnerText = eval.attr1;
          anEvaluation.Cells.Add(cell2);
      
          localTable1.Rows.Add(anEvaluation);
      }
      
      // And eventually here I should pass the localTable1 to table1
      

      【讨论】:

      • 如果您需要添加信息而不是提交答案,您应该编辑您的问题。我将此附加到您的问题中,因此您应该继续删除此答案。
      【解决方案5】:

      您只是在为自己创造工作。当您有对最终目的地的引用时,无需在局部变量中创建所有行。

      试试这个:

      foreach (Evaluation eval in theEvaluations)
      {
          HtmlTableRow anEvaluation = new HtmlTableRow();
      
          cell1.InnerText = eval.attr1;
          anEvaluation.Cells.Add(cell1);
      
          cell1.InnerText = eval.attr1;
          anEvaluation.Cells.Add(cell2);
      
          table1.Rows.Add(anEvaluation);
      }
      

      【讨论】:

      • 所以我发现添加每个不同列的唯一方法是为每个列实例化一个 HtmlTableCell。但后来我对这些列也有同样的问题:只有最后一个列表“theEvaluations”出现在最后的 ASP 表中。我检查了 List.Count,里面有不止一条记录...
      【解决方案6】:

      好的,我最终一切正常,剩下的问题只是由于 HtmlTableCell 对象的声明位置错误。

      这是一个有效的 sn-p :

      foreach (Evaluation eval in theEvaluations)
      {
          HtmlTableRow anEvaluation = new HtmlTableRow();
          HtmlTableCell cell1 = new HtmlTableCell();
          HtmlTableCell cell2 = new HtmlTableCell();
      
      
          cell1.InnerText = eval.attr1;
          anEvaluation.Cells.Add(cell1);
      
          cell2.InnerText = eval.attr2;
          anEvaluation.Cells.Add(cell2);
      
          table1.Rows.Add(anEvaluation);  // table1 : the real HTML table in ASP page
      }
      

      【讨论】:

        猜你喜欢
        相关资源
        最近更新 更多
        热门标签