2

調査を完了した、完了していない、または回答していないユーザーのリストを取得する方法を教えてください。

調査があります。「調査 A」としましょう。この調査では、調査に記入する必要がある人またはグループのリストがあります。sharepoint はすでに回答者のリストを提供していますが、回答していない、または調査を完了していない人のリストを作成したいと考えています。

私はc#を使用しています、ありがとう..

4

2 に答える 2

2
private DataTable GetUser()
{
    //SPGroup User = null;

    DataTable dt = new DataTable();
    dt.Columns.Add("Survey Remeaning User");

    DataTable dtuser = new DataTable();
    dtuser.Columns.Add("Survey Completed User");


    try
    {
        SPSecurity.RunWithElevatedPrivileges(delegate()
        {
            using (SPSite objSubSite = new SPSite(SPContext.Current.Site.Url))
            {
                SPUserCollection userCollection = SPContext.Current.Web.Groups["Survey Members"].Users;
                foreach (SPUser user in userCollection)
                {
                    StringBuilder sb = new StringBuilder();
                    sb.Append("<Where>");
                    sb.Append("<Eq>");
                    sb.Append("<FieldRef Name='Author' />");
                    sb.Append("<Value Type='User'>" + user + "</Value>");
                    sb.Append("</Eq>");
                    sb.Append("</Where>");

                    // query.ViewFields = "<FieldRef Name='Author'/>";
                    SPQuery query = new SPQuery();
                    query.Query = sb.ToString();

                    using (SPWeb objWeb = objSubSite.OpenWeb())
                    {
                        int i = objWeb.Lists["SurveyList"].GetItems(query).Count;
                        if (i == 0)
                        {
                            dt.Rows.Add(user);
                            GvUser.DataSource = dt;
                            GvUser.DataBind();
                        }
                        //if (i == 1)
                        else
                        {
                            //DataTable dtuser = new DataTable();
                            //dt.Columns.Add("SurveyCompleted");
                            dtuser.Rows.Add(user);
                            GvComUser.DataSource = dtuser;
                            GvComUser.DataBind();
                        }
                    }
                }
            }
        });
    }
    catch (Exception)
    {


    }
    return dt;
}

userとgroupにグループを作成し、その中にuserを追加する必要があります。次に、uは上記の関数を使用して、ページの読み込みに関数を追加できます。...列を追加してグリッドビューに結果を表示しました。

于 2011-02-18T13:42:48.393 に答える
2

アンケートが匿名ではないものとしてマークされており、他のユーザーがアンケートに2回以上回答できないと仮定すると、次のことができます。

  1. 調査に記入しなければならない人々のリストを取ります。
  2. 調査の項目を繰り返します(各項目は1人の回答です)。
  3. そのアイテムを作成した人をセクション1の人のリストから削除します(SharePoint調査では、調査に回答した人がアイテムの「作成者」/「作成者」プロパティとして保持されます)

結果は、調査に回答しなければならないが、まだ回答していない人々のリストになります。

于 2008-12-28T08:43:08.183 に答える