如何在sharepoint 2010 webpart中显示添加两个计数器的结果?

时间:2012-09-04 05:43:46

标签: c# sharepoint sharepoint-2010 web-parts sharepoint-list

我根据CAML查询获取了一些代码,用于在webpart中显示sharepoint 2010列表的内容,并将其修改为从两个列表而不是表中的一个列表中显示相同的内容。现在我想进一步修改代码,以便获得两个列表中不完整任务的数量。为此,我在填充表的循环中添加了计数器,并将结果存储在另一个变量c中。现在,表格填充正常,并按我想要的方式执行,但不显示变量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); 
    }
  }
}

2 个答案:

答案 0 :(得分:1)

您无法使用Console.WriteLine来显示c。您需要像使用其他字符串一样使用LiteralControl:

c = a + b;
LiteralControl totals = new LiteralControl(c.ToString());
this.Controls.Add(totals);  

答案 1 :(得分:0)

可能你得到了答案但是。你过滤两个表的方法是错误的。你需要使用 SPSiteDataQuery 我们可以用来查询多个共享点列表的对象。

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

按照以下链接了解详情 http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spsitedataquery.aspx

相关问题