0

CAMLクエリに基づいてWebパーツにSharePoint2010リストのコンテンツを表示するためのコードをいくつか取得し、テーブルに1つではなく、2つのリストから同じものを表示するように変更しました。次に、両方のリストで不完全なタスクの数を取得するために、コードをさらに変更したいと思います。そのために、テーブルにデータを入力するループにカウンターを追加し、結果を別の変数に格納しました。これで、テーブルは正常に入力され、実行したいことを実行しますが、変数cの値が表示されません...誰か助けてもらえますか?本当にありがたいです。コードは次のとおりです。

using System;
using System.ComponentModel;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using Microsoft.SharePoint;
using Microsoft.SharePoint.WebControls;

namespace SharePoint365.WebParts.OutstandingTasks
{
  [ToolboxItemAttribute(false)]
  public class OutstandingTasks : WebPart
  {
    int a; // HERE (1)
    int b; // HERE (1)
    int c; // HERE (1)
    protected override void CreateChildControls()
    {
      /*int a;
      int b;
      int c;*/
      SPList taskList = SPContext.Current.Web.Lists["test list 1"];
      SPList taskList1 = SPContext.Current.Web.Lists["test list 2"];

      SPQuery query = new SPQuery();
      query.Query = "<Where><Neq><FieldRef Name='Status' />";
                   +"<Value Type='Text'>Completed</Value></Neq></Where>";
      query.ViewFields = "<FieldRef Name='Title' /><FieldRef Name='Status'/>";

      SPListItemCollection tasks = taskList.GetItems(query);
      SPListItemCollection tasks1 = taskList1.GetItems(query);
      string htmlTable = "<table border='1'>";  
      htmlTable += "<tr><td>Title</td><td>Status</td></tr>";  

      foreach (SPListItem aTask in tasks)  
      {  
        htmlTable += string.Format("<tr><td>{0}</td><td>{1}</td></tr>",
                       aTask["Title"], aTask["Status"]);
        a++;  // HERE (2)
      }
      foreach (SPListItem aTask in tasks1)
      {
        htmlTable += string.Format("<tr><td>{0}</td><td>{1}</td></tr>",
                       aTask["Title"], aTask["Status"]);
        b++; // HERE (3)
      }

      htmlTable += "</table>";  

      c = a + b;            // HERE (4)
      Console.WriteLine(c); // HERE (4)

      LiteralControl tableControl = new LiteralControl(htmlTable);  
      this.Controls.Add(tableControl); 
    }
  }
}
4

2 に答える 2

1

Console.WriteLineを使用してcを表示することはできません。他の文字列と同じようにLiteralControlを使用する必要があります。

c = a + b;
LiteralControl totals = new LiteralControl(c.ToString());
this.Controls.Add(totals);  
于 2012-09-04T06:11:49.373 に答える
0

あなたは答えを得たかもしれませんが。2つのテーブルをフィルタリングするアプローチは間違っています。複数のSharePointリストをクエリするために使用できるSPSiteDataQueryオブジェクトを使用する必要があり ます。

SPContext.Current.Web.GetSiteData(SPSiteDataQuery Obj);

詳細については、以下のリンクをたどって くださいhttp://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spsitedataquery.aspx

于 2012-09-13T18:37:44.477 に答える