2009-03-04 6 views
14

के लिए SharePoint URL पुनर्प्राप्ति जब मैं एक हाइपरलिंक वाला कॉलम पुनर्प्राप्त करने का प्रयास करता हूं तो मुझे दो आइटम मिलते हैं जो कॉमा को एक के बजाय सीमित कर देते हैं।SPListItem

जब मैं item["ColumnName"] खींच मैं अपने मूल्य मिलता है:

http://www.google.com/article/583,%20title%20gets%20stars

क्यों यह लिंक, और शीर्षक दिखा रहा है?

उत्तर

0

इस प्रकार SharePoint लिंक स्टोर करता है। सबसे पहले यूआरएल और फिर शीर्षक जो वास्तव में पृष्ठ पर दिखाया गया है।

SharePoint प्रलेखन से: "।। URL फ़ील्ड विशिष्ट एक अल्पविराम और अंतरिक्ष के द्वारा अलग दो तार के होते हैं एक स्ट्रिंग URL पथ होता है और अन्य हाइपरलिंक पाठ के रूप में इस्तेमाल किया वर्णन होता है"

आपको दो भागों को प्राप्त करने के लिए स्ट्रिंग को विभाजित करना होगा।

string url = field["URL"].Split(',')[0]; 
string title = field["URL"].Split(',')[1]; 

कोड इष्टतम नहीं है, लेकिन केवल आपको यह दिखाने के लिए कि मेरा क्या मतलब है।

ओलिवर, आपने SharePoint संस्करण निर्दिष्ट नहीं किया है। मेरा जवाब 2003 संस्करण के लिए है। यदि आपके पास MOSS है, तो SPFieldUrl और SPFieldUrlValue कक्षाएं देखें।

6

क्योंकि निम्नतम स्तर पर, सभी शेयरपॉइंट फ़ील्ड स्ट्रिंग के रूप में संग्रहीत होते हैं। एक एसपीफ़ील्ड की GetFieldValue विधि एक स्ट्रिंग स्वीकार करती है, और यह उस स्ट्रिंग को पढ़ने और इसे सार्थक मान ऑब्जेक्ट में बदलने के लिए उस फ़ील्ड क्लास के तर्क पर निर्भर है।

आइटम ["फील्डनाम"] एक सामान्य वस्तु देता है जो फ़ील्ड मान का प्रतिनिधित्व करता है। डेटा के कच्चे स्ट्रिंग का प्रतिनिधित्व करने के अलावा, ऑब्जेक्ट आमतौर पर बेकार है।

आप GetFieldValueAsHtml() विधि का उपयोग करते हैं, यह <a href="url">title</a> वापस आ जाएगी:

//if field is of type Hyperlink, returns <a href="url">title</a> 
item.Fields["FieldName"].GetFieldValueAsHtml(item["FieldName"]) 

या

//if field is of type Hyperlink, returns Url, Title 
item.Fields["FieldName"].GetFieldValueAsText(item["FieldName"]) 

या

//if field is of type Hyperlink, returns Url 
item.Fields["FieldName"].GetValidatedString(item["FieldName"]) 
+0

कि सीधे पेज – muerte

+0

धन्यवाद meurte पर फ़ील्ड मान प्रतिपादन के लिए एचटीएमएल कोड वापस आ जाएगी, जवाब दे नहीं किया गया था। –

+0

Thats WSS 3.0 सही है? – muerte

26

आप निकाल सकते हैं वास्तविक Url और Description कॉलम मान से इस तरह:

SPFieldUrlValue fieldValue = new SPFieldUrlValue(myItem["URL"].ToString()); 

string linkTitle = fieldValue.Description; 

string linkUrl = fieldValue.Url; 
2

SPListItem यूआरएल संपत्ति सूची/Documetn लाइब्रेरी नाम सहित SPListItem के लिए URL वापस करता है, लेकिन यह सर्वर और साइट नाम सहित पूर्ण URL वापस नहीं करता है।

पूरा यूआरएल प्राप्त करने के लिए, आप या तो SPLIstItem.Web.Url और SPListItem.URL को जोड़ सकते हैं, या SPListItem से पूरा यूआरएल निकाल सकते हैं।इस तरह XML डेटा:

foreach (SPListItem item in list.Items) 
{ 
    XmlDocument xmlDoc = new XmlDocument(); 
    xmlDoc.LoadXml(item.Xml); 

    XmlNamespaceManager nsm = new XmlNamespaceManager(xmlDoc.NameTable); 
    nsm.AddNamespace("z", "#RowsetSchema"); 

    string fullURL = xmlDoc.SelectSingleNode("z:row", nsm).Attributes["ows_EncodedAbsUrl"].Value; 
} 

http://insomniacgeek.com/code/how-to-get-the-full-url-from-splistitem-in-sharepoint/