0

これまでのところ、リストからリスト アイテムを表示する次のコードがあります (カスタム Web パーツ プロパティを使用して、リストの URL とリスト名を取得します)。

リスト項目を表示するコード:

if(this.WebPart.ListUrl != null && this.WebPart.ListName != null && 
this.WebPart.AwardYear != null)
{


//getting custom properties values
string listURL = this.WebPart.ListUrl.ToString();
string listName = this.WebPart.ListName.ToString();
string awardYear = this.WebPart.AwardYear.ToString();


using (SPSite site = new SPSite(listURL))
{

using (SPWeb web = site.OpenWeb())
{

try
{


 SPList list = web.Lists[listName]; //name of the list


 //CAML query to filter list items by year and then order by year in descending order
 SPQuery awardsYear = new SPQuery();
 awardsYear.Query = @"<Where><Eq><FieldRef Name='Year'/><Value Type='Text'>" + 
 awardYear + @"</Value></Eq></Where>" + "<OrderBy><FieldRef Name='Year' 
 Ascending='False' /></OrderBy>";


 SPListItemCollection listItemColl = list.GetItems(awardsYear);


 //code for generating the table goes here EXPERIMENTAL
 Table table1 = new Table();
 TableRow tableRow = new TableRow();
 TableCell tableCell = new TableCell();



 int numberOfColumns = 4; //number of columns for the chambers table
 for (int x = 0; x < numberOfColumns; x++)
 {

 //Table columns created here need to be added somehow to the table above


 }



 //getting all the list items in the list and displaying them
 foreach (SPListItem listItem in listItemColl)
 {

  //For each of the list items create the table rows






  //The below needs to be put into a table generated programatically
  chambers = listItem["Title"].ToString();
  band = listItem["Band"].ToString();
  peopleRecommended = listItem["PeopleRecommended"].ToString();
  band2 = listItem["Band2"].ToString();

  //placeholders used to display the results
  plhDirRankings.Controls.Add(new LiteralControl("Chambers: " + chambers + "<br/>"));
  plhDirRankings.Controls.Add(new LiteralControl("Band: " + band + "<br/>"));
  plhDirRankings.Controls.Add(new LiteralControl("People Recommended: " + 
  peopleRecommended + "<br/>"));
  plhDirRankings.Controls.Add(new LiteralControl("Band: " + band2 + "<br/>"));


  }



  }

  catch (Exception err)
  {

  plhDirRankings.Controls.Add(new LiteralControl(err.ToString()));

  }

  }

  }

  }

次のように、プログラムでテーブルを生成してリスト項目を表示する最も簡単な方法は何ですか:

Chambers | Band  | PeopleRecommended | Band2 
--------------------------------------------
item1    | item1 | item1             | item1
item2    | item2 | item2             | item2

これまでプログラムでテーブルを作成したことがないので、少し混乱しています。考えさせるためにテーブルのコードのいくつかを開始しましたが、まとめることができませんでした。

これに関する支援、またはおそらく優れたチュートリアルへのリンクをいただければ幸いです

どうもありがとう、

4

2 に答える 2

2

文字通りセルごとにテーブルを作成したい場合、手順は次のようになると思います。

Table table = new Table();
TableRow headerRow = new TableRow();
foreach(string field in fields)
{
    TableCell headerCell = new TableCell();
    headerCell.Text = field;
    headerRow.Controls.Add(headerCell);
}
foreach(SPListItem li in listItemColl)
{
    TableRow dataRow = new TableRow();
    foreach(string field in fields)
    {
        TableCell dataCell = new TableCell();
        dataCell.Text = li[field].ToString();
        dataRow.Controls.Add(dataCell);
    }
}
plhDirRankings.Controls.Add(table);

ただし、GridView.

たとえば、あなたの場合、私は個人的に次のようなことをします

// As before until you have your collection.

// Create simple anonymous objects out of your list items.
var items = listItemColl.Cast<SPListItem>()
    .Select(li => new {
        Chambers = li["Title"].ToString(),
        Band = li["Band"].ToString(),
        PeopleRecommended = li["PeopleRecommended"].ToString(),
        Band2 = li["Band2"].ToString()});

// Bind objects to a GridView.
var gridView = new GridView();
plhDirRankings.Controls.Add(gridView);
gridView.DataSource = items;
gridView.DataBind();

列見出しを持つ単純なテーブルを取得するには、これで十分だと思います。

于 2012-10-30T13:09:27.433 に答える
0

これを行うためのより迅速で簡単な方法を見つけました:

//creating the table and the table hearers
plhDirRankings.Controls.Add(new LiteralControl("<table><tr><td width='170' 
valign='top'>" + "<strong>Chambers</strong>" + "</td><td width='180' valign='top'>" + 
"<strong>Band</strong>" + "</td><td width='180' valign='top'>" + "<strong>People 
Recommended</strong>" + "</td><td width='145' valign='top'>" + "<strong>Band</strong>" 
+ "</td></tr>"));


 //getting all the list items in the list and displaying them
 foreach (SPListItem listItem in listItemColl)
 {


  //getting listitem values
  chambers = listItem["Title"].ToString();
  band = listItem["Band"].ToString();
  peopleRecommended = listItem["PeopleRecommended"].ToString();
  band2 = listItem["Band2"].ToString();

  //Generating the table content 
  plhDirRankings.Controls.Add(new LiteralControl("<tr><td valign='top'>" + chambers + 
  "</td><td valign='top'>" + band + "</td><td valign='top'>" + peopleRecommended + 
  "</td><td valign='top'>" + band2 + "</td></tr valign='top'>"));



   }

   //closing the table
   plhDirRankings.Controls.Add(new LiteralControl("</table>"));

forループを使用してテーブルを生成するというかなり複雑な方法を使用するのではなく、foreachループの外側にテーブルを作成し、次にforeachループの内側にテーブル行を作成してから、foreachの外側でテーブルを閉じることにしました。ループ。

非常にシンプルでうまく機能します。

于 2012-10-31T14:15:19.767 に答える