2009-06-10 14 views
5

पर दो बार दिखाई देता है मुझे शेयरपॉइंट सूची में कोई समस्या है - कुछ फ़ील्ड डिस्प्ले फॉर्म, न्यू आइटम फॉर्म और सूची सेटिंग्स पेज पर दो बार दिखाई देते हैं। दोनों फ़ील्ड में एक ही आईडी और एक ही प्रॉपर्टी पेज (एक ही यूआरएल) होता है, इसलिए छुपाएं एक दूसरे को छुपाता है।
SharePoint Manager का उपयोग करके मैं केवल एक फ़ील्ड देख सकता हूं, लेकिन शायद मैंने गलत जगहों को देखा? क्या किसी ने कुछ ऐसा अनुभव किया है, और मैं इस मुद्दे को कैसे हल कर सकता हूं?शेयरपॉइंट - फ़ील्ड व्यू/न्यू आइटम

उत्तर

4

सामग्री प्रकार बनाता है जो XML को अद्यतन करना बुद्धिमान नहीं है। यदि आप बाद में सामग्री प्रकार पर फ़ील्ड जोड़ना चाहते हैं, तो इसे एक नई सुविधा के माध्यम से करें, यह लिंक देखें।

MSDN Article

नोट लेख निम्नलिखित

किसी भी हालत में तुम्हारे जाने के बाद स्थापित किया है और सक्रिय है कि सामग्री प्रकार है आप किसी सामग्री प्रकार के लिए सामग्री प्रकार परिभाषा फ़ाइल अद्यतन करना चाहिए। Windows SharePoint Services सामग्री प्रकार परिभाषा फ़ाइल में किए गए परिवर्तनों को ट्रैक नहीं करता है। इसलिए, आपके पास साइट सामग्री प्रकारों में किए गए परिवर्तनों को बाल सामग्री प्रकारों में किए गए परिवर्तनों को धक्का देने के लिए कोई विधि नहीं है। स्थापित और सक्रिय किए गए सामग्री प्रकारों में परिवर्तन करते समय सर्वोत्तम प्रथाओं के बारे में जानकारी के लिए, सामग्री प्रकार अपडेट करना देखें।

+0

समस्या उत्पादन पर मौजूद थी, और हमारे पास वास्तविक डेटा था। हमने नए कॉलम बनाए और उन्हें डेटा कॉपी किया, और डुप्लीकेट कॉलम हटा दिए। तो, एक तरह से, आपका समाधान वह है जो हमने किया - कुछ भी नहीं। :-) – Kobi

5

हाँ, मुझे सूचियों में जोड़े गए सामग्री प्रकारों के साथ काम करने वाली समस्याएं आई हैं। जब मैंने सामग्री प्रकारों पर अपडेट किए हैं तो किसी भी तरह से मुझे कभी-कभी डुप्लिकेट मिलते हैं। जब मैंने उन्हें देखा है तो वे एक ही आईडी और नाम प्रतीत होते हैं लेकिन आईडी वास्तव में अलग है।

जिस समाधान का मैंने उपयोग किया है (कम से कम सामग्री के साथ काम करता है) वास्तविक सामग्री फ़ाइल (फीचर) में फ़ील्डलिंक के साथ साइट सामग्री सामग्री पर फ़ील्डलिंक की तुलना करना है जिसमें सामग्री प्रकार शामिल है। यदि वे फ़ील्डलिंक की एक ही संख्या नहीं हैं ... डुप्लिकेट को हटाने के लिए कार्रवाई करें।

+0

हैलो जोहान, धन्यवाद! आप बिल्कुल सही हैं, बीटीडब्ल्यू, यह एक सामग्री प्रकार है जो सूची में सूची में जोड़ा गया है (मेरा नहीं, हालांकि)। मैं इन फ़ील्डलिंक्स कहां पा सकता हूं? क्या यह प्रोग्रामिक रूप से किया जाता है? – Kobi

+0

मेरा मतलब है यदि आप उन्हें जानते हैं। सामग्री प्रकार में इस्तेमाल फ़ील्ड के लिए लिंक। चूंकि आपके पास वास्तविक सुविधा तक पहुंच नहीं है, इसलिए मैं इस मामले में कॉलिन के समाधान की अनुशंसा करता हूं। मेरा समाधान वास्तव में समर्थित नहीं है, लेकिन वैसे भी क्या है ... SharePoint में हमें बाधाओं के चारों ओर जाने की जरूरत है, हम भी कर सकते हैं ... :-) –

7

मुझे सूची परिभाषा में कॉलम जोड़ने के बाद, एक ही समस्या मिली, वे नए/संपादन/दृश्य आइटम रूपों में दो बार प्रकट होने लगते हैं। मैंने सूची सूची में कॉलम ऑर्डरिंग को बदल दिया और समस्या हल हो गई।

+2

दिलचस्प कामकाज, धन्यवाद। मैं वास्तव में SharePoint में कई समस्याओं के बारे में जानता हूं जिसे ठीक से हल किया जा सकता है ... – Kobi

2

dublicates साफ करने के लिए इस powershell स्क्रिप्ट का उपयोग करें:

Clear-Host 
Add-PSSnapin microsoft.sharepoint.powershell -ErrorAction SilentlyContinue 
[System.Reflection.Assembly]::Load("Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c") 

$web=Get-SPWeb "http://weburl.here" 

function cleanFieldLinks($listName){ 
    $list = $web.GetList($listName) 
    $ct = $list.ContentTypes[0]; 

    $flDub = $ct.FieldLinks | group-object DisplayName | where { $_.Count -gt 1 } 

    foreach($fl in $flDub) { 
     $skipFirst = $fl.Group | select-object -skip 1 

     foreach($flDel in $skipFirst){ 
      $ct.FieldLinks.Delete($flDel.Id) 
     } 
    } 
    $ct.Update() 

} 

cleanFieldLinks("lists/listurl") 
$web.Dispose() 
2

1) सबसे पहले, मुझे लगता है कि मैं के रूप में मैं अपने काई 2007 समाधान पैकेज MOSS 2013 MOSS के साथ संगत बनाने की दिशा में काम कर रहा था इस मुद्दे में आए उल्लेख करना चाहता था 2013 डुप्लिकेट फ़ील्ड नामों की तरह प्रतीत नहीं होता है। इसलिए यदि आपके पास कस्टम फ़ील्ड हैं जिनके पास MOSS 2013 के साथ आने वाले फ़ील्ड के समान नाम है, तो आपको डुप्लिकेट फ़ील्ड नाम मिल जाएगा त्रुटि।

2) इसने मुझे अपने कस्टम फ़ील्ड और सामग्री प्रकारों को वापस जाने और अपडेट करने के लिए मजबूर किया। मैं इस मुद्दे पर आया जहां मेरे फ़ील्ड नाम कस्टम फ़ील्ड में परिवर्तन करने के बाद कई बार दिखाई दे रहे थे जो डुप्लिकेट फ़ील्ड नाम समस्या उत्पन्न कर रहे थे।

3) मैंने आपके दृश्य, नए और फ़ॉर्म को संपादित करने के क्षेत्र को कई बार दिखाने के मुद्दे को हल करने के लिए एक वेब फ़ॉर्म पेज लिखा है। जिस सूची को आप जांचना चाहते हैं उसे निर्दिष्ट करने के लिए आपको कोड को संशोधित करना होगा। यह संस्करण fieldref का पहला उदाहरण हटा देगा और दूसरा उदाहरण रखेगा:

using System; 
using System.Collections; 
using System.Configuration; 
using System.Data; 
//using System.Linq; 
using System.Web; 
using System.Web.Security; 
using System.Web.UI; 
using System.Web.UI.HtmlControls; 
using System.Web.UI.WebControls; 
using System.Web.UI.WebControls.WebParts; 
//using System.Xml.Linq; 

using Microsoft.SharePoint; 

using System.Text; 
using System.Collections.Generic; 



public partial class FixDuplicateFieldIssue : Microsoft.SharePoint.WebControls.LayoutsPageBase 
{ 



    protected void Page_Load(object sender, EventArgs e) 
    { 
     if (SPContext.Current.Web.CurrentUser == null) 
     { 
      Response.Write("You must be logged in to view this page."); 
      Response.End(); 
      return; 

     } 
     if (!SPContext.Current.Web.DoesUserHavePermissions(SPBasePermissions.ManageWeb)) 
     { 
      Response.Write("You do not have permissions to view this page."); 
      Response.End(); 
      return; 
     } 

     lblOutput.Text = ""; 

     StringBuilder sbOutput = new StringBuilder(); 

     using (SPSite site = new SPSite(SPContext.Current.Site.ID)) 
     { 
      using (SPWeb web = site.OpenWeb(SPContext.Current.Web.ID)) 
      { 
       try 
       {  
        hlBack.NavigateUrl = web.Url; 

        //open the List **** SPECIFY THE LISTNAME HERE *** 
        SPList spList = web.Lists["LISTNAME"]; 
        if (spList != null) 
        { 
         //Check FieldLinks 

         sbOutput.Append("<table border='1'>"); 

         foreach (SPContentType ct in spList.ContentTypes) 
         { 
          sbOutput.Append("<tr>"); 
          sbOutput.Append("<td>" + ct.Name + "</td>"); 
          sbOutput.Append("<td>"); 

          Dictionary<string, Guid> GuidDictionary = new Dictionary<String, Guid>(); 
          List<Guid> RepeatList = new List<Guid>(); 
          //SEARCH THE CONTENT TYPE FOR REPEAT SPFieldLinks 
          foreach (SPFieldLink spfl in ct.FieldLinks) 
          { 
           if (!GuidDictionary.ContainsKey(spfl.Name.ToLower())) 
           { 
            GuidDictionary.Add(spfl.Name.ToLower(), spfl.Id); 
           } 
           else if (GuidDictionary[spfl.Name.ToLower()].ToString().ToLower()!=spfl.Id.ToString().ToLower()) 
           { 
            //Record the GUID of the repeat SPFieldLink you want to delete in the RepeatList. In this case, we're recording the first item. If you want to delete the second one, add the spfl.Id instead. 
            RepeatList.Add(GuidDictionary[spfl.Name.ToLower()]); 
            sbOutput.Append("<span style='color:red;'>*</span>"); 
           } 

           sbOutput.Append(spfl.Name + "," + spfl.Id + "," + spfl.DisplayName +"<br />"); 

          } 
          sbOutput.Append("</td>"); 

          sbOutput.Append("<td>"); 
          sbOutput.Append("Repeats found: " + RepeatList.Count + "<br />"); 

          //DELETE THE Repeat Field Links 
          foreach (Guid idToDelete in RepeatList) 
          { 

           sbOutput.Append("Deleting FieldRef with ID= " + idToDelete.ToString() + "<br />"); 
           web.AllowUnsafeUpdates = true; 
           ct.FieldLinks.Delete(idToDelete); 
           ct.Update(); 
           web.AllowUnsafeUpdates = false; 

          } 
          sbOutput.Append("</td>"); 




          sbOutput.Append("</tr>"); 
         } 
         sbOutput.Append("</table>"); 





        } 
       } 
       catch (Exception ex) 
       { 
        sbOutput.Append("Error Occurred: " + ex.ToString()); 
       } 

      } 
     } 
     lblOutput.Text = sbOutput.ToString(); 

    } 
} 
+0

यह सिर्फ पागल आदमी है, fu * k Micro $ oft – krtek

संबंधित मुद्दे