SharePoint 2010 में सूची आइटम से परिचित होना

परिचित का सिद्धांत काफी सरल है। उपयोगकर्ता, जब सूची आइटम को देखते हैं, तो क्लिक करने के बाद रीड बटन को देखता है, जिसके बारे में डेटा और क्लिक करने का समय किसी अन्य सूची में मिलता है जहां उन्हें संग्रहीत किया जाएगा। यह सूची स्वचालित रूप से आइटम देखने के लिए पृष्ठ पर वेब डेस्क पर रखे जाने के बाद बनाई जाएगी, और इसका नाम ReadList_ <समीक्षा के लिए गाइड सूची> के रूप में बनाया जाएगा। परिचितों और परिचितों की सूचियों को देखने के लिए, हम एक और वेब डेस्क लिखेंगे जिसे हम सूची संपादन फॉर्म पर रखेंगे, जिसे हम पढ़ेंगे, क्योंकि यह समझा जाता है कि सामान्य उपयोगकर्ता देख सकते हैं, लेकिन दस्तावेज़ को संपादित नहीं करते।

यहाँ वेब साइट कैसी दिखती है।
बटन क्लिक करने से पहले:
छवि

और क्लिक करने के बाद:
छवि
हम सूची स्वयं बनाते हैं, जिन तत्वों को उपयोगकर्ताओं को खुद से परिचित करना चाहिए। मैंने इसे TestReadList कहा, हम एक अतिरिक्त फ़ील्ड जोड़ते हैं जो व्यक्ति या समूह फ़ील्ड के प्रकार को असाइन करता है, इस क्षेत्र का अर्थ तब स्पष्ट हो जाएगा जब हम परिचितों को देखने के लिए एक वेब डेस्क बनाते हैं।
Visual Studio में, एक खाली SharePoint2010 SPConfirmReadProject प्रोजेक्ट बनाएँ।
हम इसे विज़ुअल वेब पार्ट प्रोजेक्ट में जोड़ते हैं, इसे कन्फर्मवार्टपार्ट कहते हैं, और इमेज SharePoint फ़ोल्डर के लिंक को जोड़ते हैं (प्रोजेक्ट पर राइट-क्लिक करें। प्रोजेक्ट में Add-> SharePoint "Images" मैप्ड फ़ोल्डर)। इसके बाद Images \ SPConfirmReadProject फ़ोल्डर में अपना चित्र जोड़ें। इसका इस्तेमाल लिंकबटन में किया जाएगा।
यहाँ कोड ConfirmWebPart.ascx है
<table> <tr> <td> <asp:LinkButton ID="bRead" runat="server" OnClick="bRead_Click"><img src="../_Layouts/Images/SPConfirmReadProject/accept.png" style="border:0px;"/></asp:LinkButton> </td> </tr> <tr> <td> <asp:Label ID="lStatus" runat="server" Text=""></asp:Label> </td> </tr> </table> 

यहां हम वास्तव में लिंकबटन और लेबल बनाते हैं।

ConfirmWebPart.asxc.cs कोड पर जाएं:
 protected void Page_Load(object sender, EventArgs e) { bool isReal = false; //        . foreach (SPList list in SPContext.Current.Web.Lists) { if (list.Title == "ReadList_" + SPContext.Current.ListId) { isReal = true; } } SPList listConfirmReadUser; //      if (isReal) listConfirmReadUser = SPContext.Current.Web.Lists["ReadList_"+SPContext.Current.ListId]; //     else { SPContext.Current.Web.Lists.Add("ReadList_" + SPContext.Current.ListId, "", SPListTemplateType.GenericList); listConfirmReadUser = SPContext.Current.Web.Lists["ReadList_" + SPContext.Current.ListId]; listConfirmReadUser.Fields.Add("User", SPFieldType.User, true); listConfirmReadUser.Fields.Add("Date", SPFieldType.DateTime, true); listConfirmReadUser.Fields.AddLookup("ListItem", SPContext.Current.ListId, true); listConfirmReadUser.Update(); } //         SPListItemCollection listItems = listConfirmReadUser.Items; foreach (SPListItem item in listItems) { string user = item["User"].ToString().Split('#')[1]; string listItem = item["ListItem"].ToString().Split('#')[0]; if ((listItem.Remove(listItem.Length-1) == SPContext.Current.ItemId.ToString()) && (user.ToString() == SPContext.Current.Web.CurrentUser.Name.ToString())) { //          . bRead.Visible = false; lStatus.Text = "    " + item["Date"].ToString(); } } } //          protected void ConfirmUser() { var listConfirmReadUser = SPContext.Current.Site.RootWeb.Lists["ReadList_" + SPContext.Current.ListId]; SPListItemCollection listItems = listConfirmReadUser.Items; SPListItem item = listItems.Add(); item["Date"] = DateTime.Now; item["ListItem"] = SPContext.Current.ItemId; item["User"] = SPContext.Current.Web.CurrentUser; item["Title"] = ": " + SPContext.Current.Web.CurrentUser.ToString() + " - " + DateTime.Now; item.Update(); bRead.Visible = false; lStatus.Text = "    " + item["Date"].ToString(); } protected void bRead_Click(object sender, EventArgs e) { ConfirmUser(); } 


अब सब कुछ तैनात किया जा सकता है। वेब डेस्क को एलिमेंट व्यू फॉर्म पर रखा गया है।
ऐसा करने के लिए, सूची रिबन टैब पर, प्रपत्र वेब पार्ट्स का चयन करें -> दिखाए गए अनुसार डिफ़ॉल्ट प्रदर्शन फ़ॉर्म।
छवि
प्रपत्र विंडो में, वेब पार्ट जोड़ें पर क्लिक करें। श्रेणियों में, हम कस्टम का चयन करेंगे, और वेब पार्ट्स में हमारे पास हमारी वेब डेस्क होगी जिसका नाम SPConfirmReadProject - ReadUserWebPart है। ऐड बटन पर क्लिक करें और संपादन बंद करें।

यह वास्तव में वेब डेस्क परिचित पर है।

अब हम उस वेब व्यूइंग डेस्क को लिखेंगे, जिसने खुद को जाना हो और जिसने नहीं।
वेब डेस्क में 2 लिंकबटन, लेबल और ग्रिड व्यू शामिल हैं।
जब आप "दस्तावेज़ के साथ परिचित" बटन पर क्लिक करते हैं तो यह ऐसा दिखता है।
छवि
यहाँ सब कुछ बस है, हम मूर्खता से परिचितों की सूची में चढ़ते हैं और उन्हें बाहर निकालते हैं। और दिलचस्प बात यह है कि अगर हम "परिचित नहीं" बटन पर क्लिक करते हैं।
छवि
ऐसा करने के लिए, "असाइन किया गया" फ़ील्ड का उपयोग करें जो आइटम को पढ़ने के लिए असाइन किए गए लोगों और / या समूहों को सूचीबद्ध करता है। इस समस्या को हल करने के लिए, हम "निरुपित" फ़ील्ड से लोगों की एक सूची लेते हैं और पाठकों की सूची से लोगों के साथ तुलना करते हैं। चलिए शुरू करते हैं।

प्रोजेक्ट में VisualWebPart जोड़ें। चलो इसे ReadUsersWebPart कहते हैं।
ReadUserWebPart.ascx में जोड़ें
 <table> <tr> <td> <asp:LinkButton ID="lbRead" runat="server" OnClick="lbRead_Click" BorderWidth="0"><img src="../_Layouts/Images/SPConfirmReadProject/thumb_up.png" style="border:0px;" />  </asp:LinkButton> </td> <td> <p> </p> </td> <td> <asp:LinkButton ID="lbUnRead" runat="server" OnClick="lbUnRead_Click" BorderWidth="0"><img src="../_Layouts/Images/SPConfirmReadProject/thumb_down.png" style="border:0px;" /> </asp:LinkButton> </td> </tr> </table> <p></p> <asp:Label ID="Label1" runat="server"></asp:Label> <asp:GridView ID="gridView" runat="server" AllowPaging="True" BackColor="White" BorderColor="#CCCCCC" BorderStyle="None" BorderWidth="1px" CellPadding="4" EnableModelValidation="True" ForeColor="Black" GridLines="Horizontal" PageSize="20"> <FooterStyle BackColor="#CCCC99" ForeColor="Black" /> <HeaderStyle BackColor="#333333" Font-Bold="True" ForeColor="White" /> <PagerStyle BackColor="White" ForeColor="Black" HorizontalAlign="Right" /> <SelectedRowStyle BackColor="#CC3333" Font-Bold="True" ForeColor="White" /> </asp:GridView> 


और ReadUsersWebPart.ascx.cs में हम निम्नलिखित लिखते हैं:
 private SPGroup SearchGroup(string group) { SPGroup groupObject = null; foreach (SPGroup singleGroup in SPContext.Current.Web.Groups) { if (group == singleGroup.Name) { groupObject = singleGroup; } } return groupObject; } //   protected void ReadUsers() { var table = new DataTable("ReadList"); var colFIO = new DataColumn(); colFIO.DataType = System.Type.GetType("System.String"); colFIO.ColumnName = ""; table.Columns.Add(colFIO); var colDate = new DataColumn(); colDate.DataType = System.Type.GetType("System.DateTime"); colDate.ColumnName = ""; table.Columns.Add(colDate); string idItem = SPContext.Current.ItemId.ToString(); string idUser = SPContext.Current.Web.CurrentUser.ID.ToString().Split('#')[0].ToString().Replace(";",""); var listConfirmReadUser = SPContext.Current.Web.Lists["ReadList_" + SPContext.Current.ListId]; var query = new SPQuery(); string calmQuery = "<Where><And><Eq><FieldRef Name='ListItem' LookupId='true'/><Value Type='Lookup'>" + idItem + "</Value></Eq><Eq><FieldRef Name='User' LookupId='true'/><Value Type='User'>" + idUser + "</Value></Eq></And></Where>"; query.Query = calmQuery; SPListItemCollection listItems = listConfirmReadUser.GetItems(query); if (listItems.Count > 0) foreach (SPListItem item in listItems) { DataRow row; row = table.NewRow(); row[""] = item["User"].ToString().Split('#')[1]; row[""] = item["Date"]; table.Rows.Add(row); } Label1.Text = ""; gridView.DataSource = table; gridView.DataBind(); if (table.Rows.Count < 1) { Label1.Text = "   ."; } } //    protected void UnReadUsers() { string idItem = SPContext.Current.ItemId.ToString(); string idUser = SPContext.Current.Web.CurrentUser.ID.ToString().Split('#')[0].ToString().Replace(";", ""); string currentValue = string.Empty; string FieldName = string.Empty; try { currentValue = SPContext.Current.Item[" "].ToString(); FieldName = " "; } catch { currentValue = SPContext.Current.Item["Assigned to"].ToString(); FieldName = "Assigned to"; } List<SPUser> listAllUser = new List<SPUser>(); SPFieldUser UsersColumn = (SPFieldUser)SPContext.Current.Fields.GetField(FieldName); SPFieldUserValueCollection Users = (SPFieldUserValueCollection)UsersColumn.GetFieldValue(SPContext.Current.Item[FieldName].ToString()); foreach (SPFieldUserValue user in Users) { SPGroup group = SearchGroup(user.LookupValue); if (group != null) { SPUserCollection groupUsers = group.Users; foreach (SPUser groupUser in groupUsers) { if (groupUser != null) listAllUser.Add(groupUser); } } else { if (user.User != null) listAllUser.Add(user.User); } } var query = new SPQuery(); string calmQuery = "<Where><And><Eq><FieldRef Name='ListItem' LookupId='true'/><Value Type='Lookup'>" + idItem + "</Value></Eq><Eq><FieldRef Name='User' LookupId='true'/><Value Type='User'>" + idUser + "</Value></Eq></And></Where>"; query.Query = calmQuery; SPList list = SPContext.Current.Web.Lists["ReadList_" + SPContext.Current.ListId]; SPListItemCollection listReadUsers = list.GetItems(query); if (listReadUsers.Count > 0) { List<SPUser> listReadUser = new List<SPUser>(); foreach (SPListItem item in listReadUsers) { SPFieldUser UserReadColumn = (SPFieldUser)item.Fields.GetField("User"); SPFieldUserValue ur = (SPFieldUserValue)UserReadColumn.GetFieldValue(item["User"].ToString()); listReadUser.Add(ur.User); } if (listReadUser.Count() > 0) foreach (SPUser rUser in listReadUser) { if (rUser != null) listAllUser.RemoveAll(u => u.ID == rUser.ID); } } List<SPUser> usd = new List<SPUser>(); foreach (SPUser spUser in listAllUser) { List<SPUser> listUsr = (from u in listAllUser where (u.ID == spUser.ID) select u).ToList(); if (listUsr.Count() > 1) { usd.Add(listUsr[0]); } } foreach (SPUser spUser in usd) { listAllUser.Remove(spUser); } var table = new DataTable("UnReadList"); var colFIO = new DataColumn(); colFIO.DataType = System.Type.GetType("System.String"); colFIO.ColumnName = ""; table.Columns.Add(colFIO); foreach (SPUser spUser in listAllUser) { DataRow row; row = table.NewRow(); row[""] = spUser.Name; table.Rows.Add(row); } Label1.Text = ""; gridView.DataSource = table; gridView.DataBind(); if (listAllUser.Count() < 1) { Label1.Text = "   ."; } } protected void lbRead_Click(object sender, EventArgs e) { ReadUsers(); } protected void lbUnRead_Click(object sender, EventArgs e) { UnReadUsers(); } 

इसके बाद, आप उन उपयोगकर्ताओं को समाचार पत्र भेज सकते हैं, जो विजुअल स्टूडियो या SharePoint डिज़ाइनर में वर्कफ़्लो का उपयोग करके असाइन किए गए फ़ील्ड में पंजीकृत हैं।

मुझे उम्मीद है कि लेख आपके लिए उपयोगी होगा। जल्द ही मैं लिखूंगा कि आप इन सूचियों को कैसे प्रिंट कर सकते हैं, और एक के लिए, और वीएस में इस कार्य के लिए वर्कफ़्लो मेल कैसे लिखें।

Source: https://habr.com/ru/post/In192506/


All Articles