2009-08-18 4 views
1

Es scheint nicht eine unmögliche Frage zu sein, aber ich finde keinen Weg, ein HtmlTable-Steuerelement (das von Codebehind zugänglich ist) mit einem HtmlTable-Objekt bereits zu füllen mit Daten gefüllt.HtmlTable-Steuerelement mit HtmlTable-Objekt in ASP/C füllen #

Kann mir jemand dabei helfen ??

Grüße,

EDIT

In der ASP-Seite, ich eine HTML-Tabelle

In Code-Behind, ich zum ersten Mal ein Htmltable-Objekt aus einer Liste füllen habe zu tun mit ID = "table1" dies wie:

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 
+0

Können Sie einige Code schreiben, damit wir eine bessere Vorstellung bekommen, was Sie zu tun versuchen? – BigBlondeViking

+0

Werden Sie bitte etwas Code zeigen, damit wir eine Vorstellung davon bekommen, was Sie haben und wie Sie es versuchen? – TheVillageIdiot

+0

Natürlich !! Sehen Sie sich das Code-Snippet unter –

Antwort

0

Ok, ich schließlich alles haben arbeiten, le verbleibendes Problem war nur wegen einer falschen Erklärung Platz für die Htmltablecell-Objekte.

Hier ist ein funktionierendes Schnipsel:

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 
} 
0

verwenden Sie <Tabelle> Tags die erstellen Tabelle? In diesem Fall sollten Sie das Tag < asp: Table > verwenden, um Zugriff auf die Tabelle vom Codebehind zu erhalten.

1

Es klingt wie Sie eine Tabelle haben und Sie versuchen, so etwas wie

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

zu tun, das ist nicht, wie es funktioniert. Wenn Sie ein gefülltes Tabellenobjekt haben, das Sie rendern möchten, erstellen Sie ein Literalsteuerelement, und greifen Sie auf die Add() - Methode der Controls-Auflistung zu, und fügen Sie das Tabellenobjekt hinzu. Wie folgt:

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

Oder Sie sollten nur die Tabelle direkt ausfüllen.

+0

Danke Spencer, aber die Sache ist, ich habe bereits einen präzisen Tabellenrahmen in meiner ASP-Seite (Header sind darin angegeben) und ich wollte nur Zeilen unter –

+0

hinzufügen Dann müssen Sie auf die Zeilen-Sammlung der zugreifen Tabellenobjekt und erstellen Sie neue HtmlTableRow() - Objekte anstelle einer ganz neuen Tabelle. –

+0

Ok, das mache ich jetzt, und es fügt meiner ASP-Tabelle eine Zeile hinzu, aber immer nur den letzten Datensatz meiner Quellliste (der 2 Elemente enthält) ... –

0

Eine bessere Lösung wäre, wenn möglich, die HtmlTable von der Seite an die Funktion zu übergeben, die sie füllt.

0

In der ASP-Seite, ich habe eine HTML-Tabelle mit ID = "table1"

In Code-Behind, ich bevölkere ein Htmltable-Objekt aus einer Liste zuerst wie dies zu tun:

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 
+0

Sie sollten Ihre Frage bearbeiten, wenn Sie Informationen hinzufügen müssen anstatt eine Antwort zu senden. Ich habe das an deine Frage angehängt, also solltest du einfach weitermachen und diese Antwort löschen. –

0

Du bist Schaffen Sie nur Arbeit für sich selbst. Sie müssen nicht alle Zeilen in einer lokalen Variablen erstellen, wenn Sie direkt auf das endgültige Ziel verweisen.

Try this:

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); 
} 
+0

Ja! Ich habe das bereits probiert, aber nur die letzte hinzugefügte Zelle ist enthalten ... –

+0

Also die einzige Möglichkeit, die ich für jede andere Spalte gefunden habe, ist die Instantiierung einer HtmlTableCell für jede einzelne. Aber dann habe ich das gleiche Problem mit den Spalten: Nur die letzte meiner Liste "theEvaluations" ist in der ASP-Tabelle am Ende vorhanden. Ich habe die List.Count überprüft und es gibt mehr als einen Datensatz darin ... –