2013-03-26 81 views
0

我创建了一个可视化Web部件并在Grid中加载列表。现在当用户A登录时,它只需显示由用户A创建的项目。用户B必须仅显示属于用户b的项目。这里是我写的代码。它显示所有项目,不管登录用户。任何一个可以帮助我在这通过代码创建列来​​过滤Sharepoint可视化Web部件

public void Displaylistdata() 
     { 
      // System.Diagnostics.Debugger.Break(); 

      DataTable dt = new DataTable(); 
      var oSPWeb = SPContext.Current.Web; 
      SPList oSpList = oSPWeb.Lists["Participation at a Glance"]; 
      string strCreatedby = SPContext.Current.Web.Author.Name; 
      SPQuery oQuery = new SPQuery(); 
      oQuery.Query = "<Query><Where><Eq><FieldRef Name='Author' /><Value Type='User'>" + strCreatedby + "</Value></Eq></Where></Query>"; 
      SPListItemCollection collListItems = oSpList.GetItems(oQuery); 

      DataTable dts = collListItems.GetDataTable(); 

      if (dts != null) 
      { 
       Gridview1.GridLines = GridLines.None; 
       Gridview1.DataSource = dts; 
       Gridview1.DataBind(); 
       Controls.Add(Gridview1); 
      } 

      else`enter code here` 
      { 

       lbl_noact.Visible = true; 
       lbl_noact.Text = "We apologize there are no times currently available."; 

      } 


     } 

回答

0

嗨我已通过更改我的骆驼查询如下修复。以前的数据类型是USER,但是当我更改为字符串时,它的作用就像一个魅力:-)

 DataTable dt = new DataTable(); 
     var oSPWeb = SPContext.Current.Web; 
     SPList oSpList = oSPWeb.Lists["Participation at a Glance"]; 
     string strCreatedby = SPContext.Current.Web.CurrentUser.Name; 
     SPQuery oQuery = new SPQuery(); 
     oQuery.Query = @"<Where><Eq><FieldRef Name='Author' /><Value Type='String'>" + strCreatedby + "</Value></Eq></Where>"; 
     SPListItemCollection collListItems = oSpList.GetItems(oQuery);