Я только начал играть с разработкой в SP2010, так что я полный begginer. Я создал простое консольное приложение с кодом, как это:Как заполнить таблицу HTML с результатом SPQuery
using (SPSite currentSite = new SPSite("http://win-e9840laitme"))
{
using (SPWeb currentWeb = currentSite.OpenWeb())
{
SPList myList = currentWeb.Lists["List1"];
string currentUserName = currentWeb.CurrentUser.Name;
SPQuery queryInformationAboutCurrentUser = new SPQuery();
queryInformationAboutCurrentUser.Query = "<Where>" +
"<Eq><FieldRef Name='EmployeeName'/><Value Type='Text'>" + currentUserName + "</Value></Eq>" +
"</Where>";
List<EmployeeInfo> listEmployeeInfo = new List<EmployeeInfo>();
SPListItemCollection collectionEmployee = myList.GetItems(queryInformationAboutCurrentUser);
foreach (SPListItem info in collectionEmployee)
{
EmployeeInfo eInfo = new EmployeeInfo();
eInfo.Deparment = info["Office"].ToString();
listEmployeeInfo.Add(eInfo);
}
foreach (EmployeeInfo eI in listEmployeeInfo)
{
SPQuery querySameOffice = new SPQuery();
querySameOffice.Query = "<Where>" +
"<Eq><FieldRef Name='Office'/><Value Type='Choice'>" + eI.Deparment + "</Value></Eq>" +
"</Where>";
SPListItemCollection collectionEmployeeDisplay = myList.GetItems(querySameOffice);
foreach (SPListItem item in collectionEmployeeDisplay)
{
Console.WriteLine(item["EmployeeName"].ToString() + " " + item["PhoneNumber"].ToString() + "\n");
}
}
}
}
Теперь я хочу использовать этот код внутри Sharepoint проекта, и вместо того, чтобы результат из SPQuery на консоли, я хочу, чтобы заполнить HTML таблицу с результатом статически (без JS или JQuery, если это возможно). Я создал проект sp и добавил ApplicationPage. Моя идея состояла в том, чтобы использовать StringBuilder
и что-то вроде этого:
StringBuilder html = new StringBuilder();
html.Append("<table border = '1'>");
//Building the Header row.
html.Append("<tr>");
html.Append("<th>");
html.Append("EmployeeName");
html.Append("</th>");
html.Append("<th>");
html.Append("PhoneNumber");
html.Append("</th>");
html.Append("</tr>");
и в последнем цикле Еогеасп этот код:
foreach (SPListItem item in collectionEmployeeDisplay)
{
html.Append("<tr>");
html.Append("<td>");
html.Append(item["EmployeeName"].ToString());
html.Append("</td>");
html.Append("<td>");
html.Append(item["PhoneBook"].ToString());
html.Append("</td>");
html.Append("</tr>");
}
//Table end.
html.Append("</table>");
//Append the HTML string to Placeholder.
PlaceHolder1.Controls.Add(new Literal { Text = html.ToString() });
Я считаю, есть более изящные решения этой проблемы, и если вы сейчас он, пожалуйста, дайте мне идею. Спасибо.
у вас отсутствует закрытие '}' btw .. Я исправлю ваше форматирование – MethodMan
'foreach (элемент SPListItem в коллекцииEmployeeDisplay)' что со всеми дополнительными '{}' исправьте этот беспорядок .. и пост читаемый код .. – MethodMan
проверить это http://stackoverflow.com/questions/11935729/populate-a-table-on-an-asp-net-page – MethodMan