2012-02-13 1 views
0

В настоящее время я использую два заполнителя содержимого для отображения заголовка и сводки элементов списка. Currenlty Я показываю только заголовок и сводку для 2 элементов списка. Вместо использования заполнителей я хочу иметь возможность создать таблицу в коде позади, которая генерирует строки и ячейки, которые отображают заголовок и сводку как можно большего количества элементов списка, как указано в цикле for. Приведенный ниже код показывает WAHT I currenlty есть с точки зрения создания таблицы в коде beheind но нету совсем понял, как подключить его в цикл я в настоящее время для отображения элементов списка:Создание таблицы с использованием цикла for в коде за

//for loop to iterate through the list retrieving the required amount of lits items 
//the number of times to iteratie through the loop will be specified by the user using 
//the custom property 
if (this.WebPart != null & this.WebPart.ListName != null & 
!this.WebPart.OverviewArticle) 
{ 
string Listname = this.WebPart.ListName; //get the value of the ListName custom 
property 
int publicationNumberofitems = this.WebPart.pubNumOfItems; //get the value of the 
                  //pubNumOfItems as int 

//since the first iten in the list is 0 (making this variable -1 cause the correct 
//amount of details to be displayed based on the number 
//provided via the pubNumOfItems custom property. So if a value of 2 is provided then 
//only two items will be displayed and so on. 
int listItemsNumber = publicationNumberofitems - 1; 

SPWeb web = SPContext.Current.Web; 
SPList list = web.Lists[Listname]; 

SPListItemCollection collListItems = list.Items; 

//creating a table to hold the list items in the for loop. This will replace the use 
//of the placeholders 
Table table1 = new Table(); 
TableRow tr = new TableRow(); 
TableCell tc = new TableCell(); 



//for loop to iterate through the list retrieving the required amount of lits items 
//the number of times to iteratie through the loop will be specified by the user using 
//the custom property 
for (int i = 0; i < listItemsNumber && i < collListItems.Count; i++) 
{ 
SPListItem listItems = collListItems[i]; 

string title1 = (string)collListItems[i]["Title"]; 
string summary1 = (string)collListItems[i]["Summary"]; 

//generating the table rows and cell is not currenlty working    
tr.Cells.Add(tc); 
tc.Controls.Add(new LiteralControl(title1)); 

//placeholders are no longer required, a table with rows and cells generated by the 
//for loop is required instead 
//plhPubTitleHyper.Controls.Add(new LiteralControl(title1)); 
//plhPubSummary.Controls.Add(new LiteralControl(summary1)); 

} 

} 

Любая помощь с этой волей будем очень благодарны. Заранее спасибо

ОБНОВЛЕНО КОД:

//creating a table to hold the list items in the for loop. This will replace the use 
//of the placeholders 
Table table1 = new Table(); 
TableRow tr = null; 

//for loop to iterate through the list retrieving the required amount of lits items 
//the number of times to iteratie through the loop will be specified by the user using 
//the custom property 
for (int i = 0; i < listItemsNumber && i < collListItems.Count; i++) 
{ 
SPListItem listItems = collListItems[i]; 

string title1 = (string)collListItems[i]["Title"]; 
//string summary1 = (string)collListItems[i]["Summary"]; 


tr = new TableRow(); 

TableCell c1 = new TableCell(); 
TableCell c2 = new TableCell(); 

c1.Controls.Add(new LiteralControl(title1)); 
//c2.Controls.Add(new LiteralControl(summary1));//This needs to be in another row 

tr.Cells.Add(c1); 
//tr.Cells.Add(c2); 

table1.Rows.Add(tr); 

//plhPubTitleHyper.Controls.Add(new LiteralControl(table1)); 

//plhPubTitleHyper.Controls.Add(new LiteralControl(title1)); 
//plhPubSummary.Controls.Add(new LiteralControl(summary1)); 

} 

plhPubTitleHyper.Controls.Add(table1); 
} 

обновленный код работает, но теперь мне нужно, чтобы иметь возможность добавлять строки и иметь резюме в другой строке, а не в колонке на одной и той же строке.

ответ

1
Table table1 = new Table(); 
    TableRow tr = null; 

    for (int i = 0; i < 5; i++) { 
     tr = new TableRow(); 

     //You can also do a loop for the cell 
     TableCell c1 = new TableCell(); 
     TableCell c2 = new TableCell(); 
     TableCell c3 = new TableCell(); 

     c1.Text = "Cell One"; 
     c2.Text = "Cell Two"; 
     c3.Text = "Cell Three"; 

     tr.Cells.Add(c1); 
     tr.Cells.Add(c2); 
     tr.Cells.Add(c3); 

     table1.Rows.Add(tr); 
    } 

    form1.Controls.Add(table1);