Лучший отвечающий
Визуальная веб-часть для отчета в sharepoint 2010 foundation

Вопрос
-
Добрый день! Нужно сделать визуальную веб-часть где будет отображаться отчет в виде таблицы:
ФИО | Группы | Библиотеки |
И будет поле для указания по какому пользователю(колонка "ФИО") будет отображаться остальная информация.
Как сделать такой запрос в визуальной веб-части???
18 марта 2013 г. 12:17
Ответы
-
Вот код если кому интересно:
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; using System.Text; using Microsoft.SharePoint.Utilities; namespace Report.VisualWebPart1 { public partial class VisualWebPart1UserControl : UserControl { protected void Page_Load(object sender, EventArgs e) {} // Label zagolovok; //string lblName; //string lblgroups; TextBox lblgroups; Table tblAllUsers; public VisualWebPart1UserControl() {} protected override void CreateChildControls() { base.CreateChildControls(); tblAllUsers = new Table(); // zagolovok = new Label(); string lblName; // string lblgroups; // lblgroups = new string(); lblgroups = new TextBox(); // lblName = new Label(); CreateHeaderRow(); // Will Add a header Row to the Table. using (SPSite SPSite = new SPSite(SPContext.Current.Site.ID)) { using (SPWeb SPWeb = SPSite.OpenWeb(SPContext.Current.Web.ID)) { SPUserCollection AllSPWebUsers = SPContext.Current.Web.AllUsers; SPGroupCollection AllSPWebGroups = SPContext.Current.Web.Groups; SPListCollection AllSPWebList = SPContext.Current.Web.Lists; foreach (SPUser user in AllSPWebUsers) { lblName = user.Name; SPGroupCollection webGroups = user.Groups; lblgroups.Text = ""; foreach (SPGroup grp in webGroups) { lblgroups.Text = lblgroups.Text + grp.Name + "<br />"; // lblgroups.Text = lblgroups.Text + "; "; } lblgroups.TextMode = System.Web.UI.WebControls.TextBoxMode.MultiLine; AddToTable(lblName, lblgroups.Text); } this.Controls.Add(tblAllUsers); } } } protected void AddToTable(string UserName, string grp) { TableRow r = new TableRow(); //r.Font.Size= 15; TableCell CellName = new TableCell(); CellName.Width= 300; CellName.Font.Size= 12; CellName.Text = UserName; r.Cells.Add(CellName); TableCell CellPermissions = new TableCell(); //CellPermissions.Wrap = true; CellPermissions.Width = 550; CellPermissions.Font.Size = 12; CellPermissions.Text = grp; r.Cells.Add(CellPermissions); tblAllUsers.Rows.Add(r); } // Create a Header Row for the Output table. protected void CreateHeaderRow() { zagolovok.Text = "Дата отчета: " + DateTime.Now; zagolovok.DataBind(); TableHeaderRow headerRow = new TableHeaderRow(); headerRow.BackColor = System.Drawing.Color.LightBlue; headerRow.Font.Size = 12; TableHeaderCell headerTableCell1 = new TableHeaderCell(); TableHeaderCell headerTableCell2 = new TableHeaderCell(); headerTableCell1.Text = "Пользователи сайта"; headerTableCell1.Scope = TableHeaderScope.Column; headerTableCell2.Text = "Группы"; headerTableCell2.Scope = TableHeaderScope.Column; headerRow.Cells.Add(headerTableCell1); headerRow.Cells.Add(headerTableCell2); tblAllUsers.Rows.AddAt(0, headerRow); } }}
<asp:Label ID="zagolovok" runat="server" Text=""></asp:Label>
Так же я сделал еще две веб-части. Одна по пользователям но с полем TextBox для поиска, а другая по группам.
21 марта 2013 г. 13:57
Все ответы
-
А отчет в excel или представление списка не подойдет?
про запросы http://habrahabr.ru/post/82787/
18 марта 2013 г. 13:21 -
Хотелось бы сделать в визуальной части.18 марта 2013 г. 13:25
-
Ссылка выше, еще есть Linq to SharePoint.
- Изменено Andrey_S1 18 марта 2013 г. 16:46
18 марта 2013 г. 16:45 -
Я сделал веб-часть и в ней сделал таблицу с полями | ФИО | Группы | Библиотеки | и в этих полях отображается необходимая инфа. А вот как мне сделать поле для ввода фамилии пользователя по которому будет отображаться информация в этих колонках таблицы???19 марта 2013 г. 9:08
-
мне кажется я не совсем понял задачу, но хотел предложить такой вариант:
если положить на страницу и соеденить две веб части
1. веб-часть фильтр тестов
2. представление данных (к примеру Data Form Web Part)
соеденить можно передавая фильтры (необходимо будет вводить полное имя пользователя) или передавая параметры (настроить фильтр пользователь содержит "параметр")
- Изменено Kaplin VladimirModerator 19 марта 2013 г. 9:29
- Помечено в качестве ответа Иван ПродановMicrosoft contingent staff, Moderator 22 марта 2013 г. 14:42
- Снята пометка об ответе Ruslan P 27 марта 2013 г. 7:16
19 марта 2013 г. 9:29Модератор -
мне кажется я не совсем понял задачу, но хотел предложить такой вариант:
если положить на страницу и соеденить две веб части
1. веб-часть фильтр тестов
2. представление данных (к примеру Data Form Web Part)
соеденить можно передавая фильтры (необходимо будет вводить полное имя пользователя) или передавая параметры (настроить фильтр пользователь содержит "параметр")
19 марта 2013 г. 11:56 -
что именно Вы хотите увидеть?
как это выглядит в итоге или как настроить то что я описал?
19 марта 2013 г. 12:07Модератор -
что именно Вы хотите увидеть?
как это выглядит в итоге или как настроить то что я описал?
19 марта 2013 г. 12:59 -
посмотрите статью Соединение веб-части фильтра с веб-частью "Представление списка"
если решите передавать параметры, то делать нужно через дизайнер
будут вопросы обращайтесь.
- Изменено Kaplin VladimirModerator 19 марта 2013 г. 13:29
- Предложено в качестве ответа Иван ПродановMicrosoft contingent staff, Moderator 21 марта 2013 г. 8:25
- Помечено в качестве ответа Иван ПродановMicrosoft contingent staff, Moderator 22 марта 2013 г. 14:42
- Снята пометка об ответе Ruslan P 27 марта 2013 г. 7:16
19 марта 2013 г. 13:29Модератор -
Я сделал веб-часть тестовою по текущему пользователю:
code behind:
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; using System.Text; using Microsoft.SharePoint.Utilities; namespace Report.VisualWebPart1 { public partial class VisualWebPart1UserControl : UserControl { protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { using (SPSite site = new SPSite("http://test:83/")) { using (SPWeb web = site.OpenWeb()) { SPListCollection lists = web.Lists; lists.ListsForCurrentUser = true; foreach (SPList lst in lists) { if (lst.BaseType == SPBaseType.DocumentLibrary) { //Response.Write("- " + lst.Title + "<br/>"); // SPListCollection AllSPWebList = SPContext.Current.Web.Lists; // SPWebCollection webCollection = web.GetSubwebsForCurrentUser(); string currUser = web.CurrentUser.Name; SPUser currentUser = web.CurrentUser; SPGroupCollection webGroups = currentUser.Groups; //SPListCollection userlist = web.CurrentUser; //SPUserCollection alluser = web.AllUsers; TextBox1.Text = currUser; TextBox1.DataBind(); CheckBoxList1.DataSource = webGroups; CheckBoxList1.DataBind(); CheckBoxList3.DataSource = lists; CheckBoxList3.DataBind(); } } } } } } } }
Как сделать поле для ввода ФИО пользователя по которому будет выводиться вся инфа в таблице????
- Изменено Ruslan P 20 марта 2013 г. 14:52
20 марта 2013 г. 14:46 -
Если делать, как описано выше с 2 вебчастями то не нужно кода, это стандартные вебчасти. (это правильный вариант)
Если вы хотите свою писать, то поле для ввода у вас есть TextBox1, если вы про поле SharePoint PioplePicker, то вот
http://sharepoint.stackexchange.com/questions/49332/how-can-i-use-the-sharepoint-people-picker-control-in-my-custom-web-part
https://www.google.ru/webhp?sourceid=chrome-instant&ion=1&ie=UTF-8#hl=ru&newwindow=1&sclient=psy-ab&q=sharepoint+people+picker+control&oq=sharepoint++picker+control&gs_l=hp.3.1.0j0i7i30l2j0i7i10i30.2985.2985.3.4442.1.1.0.0.0.0.140.140.0j1.1.0...0.0...1c.1.7.psy-ab.7TpPzM_wptE&pbx=1&bav=on.2,or.r_cp.r_qf.&bvm=bv.44011176,d.bGE&fp=1a09ef8944fe6c26&ion=1&biw=1846&bih=1019
- Предложено в качестве ответа Иван ПродановMicrosoft contingent staff, Moderator 21 марта 2013 г. 8:25
- Помечено в качестве ответа Иван ПродановMicrosoft contingent staff, Moderator 22 марта 2013 г. 14:42
- Снята пометка об ответе Ruslan P 27 марта 2013 г. 7:16
20 марта 2013 г. 15:21 -
Если делать, как описано выше с 2 вебчастями то не нужно кода, это стандартные вебчасти. (это правильный вариант)
Если вы хотите свою писать, то поле для ввода у вас есть TextBox1, если вы про поле SharePoint PioplePicker, то вот
http://sharepoint.stackexchange.com/questions/49332/how-can-i-use-the-sharepoint-people-picker-control-in-my-custom-web-part
https://www.google.ru/webhp?sourceid=chrome-instant&ion=1&ie=UTF-8#hl=ru&newwindow=1&sclient=psy-ab&q=sharepoint+people+picker+control&oq=sharepoint++picker+control&gs_l=hp.3.1.0j0i7i30l2j0i7i10i30.2985.2985.3.4442.1.1.0.0.0.0.140.140.0j1.1.0...0.0...1c.1.7.psy-ab.7TpPzM_wptE&pbx=1&bav=on.2,or.r_cp.r_qf.&bvm=bv.44011176,d.bGE&fp=1a09ef8944fe6c26&ion=1&biw=1846&bih=1019
20 марта 2013 г. 15:28 -
да есть20 марта 2013 г. 16:20
-
А как мне взять из TextBox после нажатия кнопки имя пользователя и заполнить таблицу по примеру:
ФИО | Группы | Библиотеки |
Иванов И.И. Админы сайта Общие доки
Маркетинговый отдел Библиотека 1
И т.д. Библиотека 2
21 марта 2013 г. 9:22 -
Вот код если кому интересно:
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; using System.Text; using Microsoft.SharePoint.Utilities; namespace Report.VisualWebPart1 { public partial class VisualWebPart1UserControl : UserControl { protected void Page_Load(object sender, EventArgs e) {} // Label zagolovok; //string lblName; //string lblgroups; TextBox lblgroups; Table tblAllUsers; public VisualWebPart1UserControl() {} protected override void CreateChildControls() { base.CreateChildControls(); tblAllUsers = new Table(); // zagolovok = new Label(); string lblName; // string lblgroups; // lblgroups = new string(); lblgroups = new TextBox(); // lblName = new Label(); CreateHeaderRow(); // Will Add a header Row to the Table. using (SPSite SPSite = new SPSite(SPContext.Current.Site.ID)) { using (SPWeb SPWeb = SPSite.OpenWeb(SPContext.Current.Web.ID)) { SPUserCollection AllSPWebUsers = SPContext.Current.Web.AllUsers; SPGroupCollection AllSPWebGroups = SPContext.Current.Web.Groups; SPListCollection AllSPWebList = SPContext.Current.Web.Lists; foreach (SPUser user in AllSPWebUsers) { lblName = user.Name; SPGroupCollection webGroups = user.Groups; lblgroups.Text = ""; foreach (SPGroup grp in webGroups) { lblgroups.Text = lblgroups.Text + grp.Name + "<br />"; // lblgroups.Text = lblgroups.Text + "; "; } lblgroups.TextMode = System.Web.UI.WebControls.TextBoxMode.MultiLine; AddToTable(lblName, lblgroups.Text); } this.Controls.Add(tblAllUsers); } } } protected void AddToTable(string UserName, string grp) { TableRow r = new TableRow(); //r.Font.Size= 15; TableCell CellName = new TableCell(); CellName.Width= 300; CellName.Font.Size= 12; CellName.Text = UserName; r.Cells.Add(CellName); TableCell CellPermissions = new TableCell(); //CellPermissions.Wrap = true; CellPermissions.Width = 550; CellPermissions.Font.Size = 12; CellPermissions.Text = grp; r.Cells.Add(CellPermissions); tblAllUsers.Rows.Add(r); } // Create a Header Row for the Output table. protected void CreateHeaderRow() { zagolovok.Text = "Дата отчета: " + DateTime.Now; zagolovok.DataBind(); TableHeaderRow headerRow = new TableHeaderRow(); headerRow.BackColor = System.Drawing.Color.LightBlue; headerRow.Font.Size = 12; TableHeaderCell headerTableCell1 = new TableHeaderCell(); TableHeaderCell headerTableCell2 = new TableHeaderCell(); headerTableCell1.Text = "Пользователи сайта"; headerTableCell1.Scope = TableHeaderScope.Column; headerTableCell2.Text = "Группы"; headerTableCell2.Scope = TableHeaderScope.Column; headerRow.Cells.Add(headerTableCell1); headerRow.Cells.Add(headerTableCell2); tblAllUsers.Rows.AddAt(0, headerRow); } }}
<asp:Label ID="zagolovok" runat="server" Text=""></asp:Label>
Так же я сделал еще две веб-части. Одна по пользователям но с полем TextBox для поиска, а другая по группам.
21 марта 2013 г. 13:57 -
посмотрите Sharepoint Permissions Manager, возможно будет полезно...21 марта 2013 г. 16:09Модератор
-
Все я сделал свой собственный отчет по такому принципу как я хотел. Всем спасибо за помощь.22 марта 2013 г. 14:20