resultados de la encuesta en sharepoint
-
22-07-2019 - |
Pregunta
¿cómo obtengo una lista de usuarios que completaron o no completaron o no respondieron a una encuesta?
así que tengo una encuesta, digamos "encuesta A". en esta encuesta tengo una lista de personas o grupos que deben completar la encuesta. sharepoint ya nos da una lista de encuestados, pero quiero hacer una lista de las personas que no respondieron o no completaron la encuesta.
Estoy usando C #, gracias ..
Solución
Suponiendo que su encuesta está marcada como no anónima y que las personas no pueden responder la encuesta más de una vez, puede hacer lo siguiente:
- Tome la lista de personas que DEBEN completar la encuesta.
- Iterar sobre los elementos de la encuesta (cada elemento es una respuesta de una sola persona).
- Elimine a la persona que creó ese elemento de la lista de personas de la sección 1. (Las encuestas de SharePoint mantienen a la persona que respondió a la encuesta como la propiedad "Creador" / "Autor" del elemento)
El resultado será la lista de personas que DEBEN responder la encuesta, pero aún no lo han hecho.
Otros consejos
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;
}
tienes que crear un grupo en user y group y agregar usuario en eso. y luego puede usar la función anterior y agregar la función en la carga de la página ... He mostrado el resultado en la vista de cuadrícula agregando columnas en él