MOSS / InfoPath ಫಾರ್ಮ್ಸ್ ಸರ್ವರ್ (InfoPath 2007) ಡ್ರಾಪ್ ಡೌನ್ ಪಟ್ಟಿ ಪ್ರದರ್ಶನ

ಹೆಚ್ಚುವರಿ ವರ್ಗದಲ್ಲಿ: InfoPath

ಸಂಗ್ರಹವಾದ: ಒಂದು InfoPath 2007 ಪಾಚಿಯ ಸರ್ವರ್ ನಿಯೋಜಿಸಲಾಯಿತು ರೂಪಿಸಲು ಕಸ್ಟಮ್ MOSS ಪಟ್ಟಿ ಕಟ್ಟಲಾಗುತ್ತದೆ ಮಾರಾಟಗಾರರು ಒಂದು ಡ್ರಾಪ್ ಡೌನ್ ಪಟ್ಟಿಯನ್ನು ನೀಡುತ್ತದೆ. ಒಂದು ಮಾರಾಟಗಾರರ ಆಯ್ಕೆ ಮೇಲೆ, ನಿಯಮಗಳು ಮಾರಾಟ ಪ್ರತಿನಿಧಿಯನ್ನು ಹೆಸರು ಪಠ್ಯ ಜಾಗ ಬೆರಳೆಣಿಕೆಯಷ್ಟು ಕ್ಷೇತ್ರ ಮೌಲ್ಯಗಳನ್ನು ನಿಗದಿ, ವಿಳಾಸ, ನಗರ, ರಾಜ್ಯ, ZIP ಮತ್ತು ಫೋನ್. ಪ್ರದರ್ಶನ ಭಯಂಕರವಾಗಿರುತ್ತದೆ. ನಾವು ಸಾಧನೆ ಉಲ್ಬಣಿಸಿ ಗಮನಿಸಿ (in a non-linear fashion) ಪ್ರತಿ ಹೆಚ್ಚುವರಿ ಕ್ಷೇತ್ರಕ್ಕೆ ನಾವು ಈ ರೀತಿಯಲ್ಲಿ ಅಪ್ಡೇಟ್. ಅಂದರೆ, ನಾವು ಮಾರಾಟ ಪ್ರತಿನಿಧಿಯನ್ನು ಹೆಸರು ನವೀಕರಿಸಲು ವೇಳೆ, ಇದು ತೆಗೆದುಕೊಳ್ಳುತ್ತದೆ [X] ಸಮಯ ಪ್ರಮಾಣವನ್ನು. ನಾವು ಮಾರಾಟ ಪ್ರತಿನಿಧಿಯನ್ನು ನವೀಕರಿಸಲು ವೇಳೆ, address1, address2, ನಗರ, ರಾಜ್ಯ, ಬಲ, ಇದು ತೆಗೆದುಕೊಳ್ಳುತ್ತದೆ 10 ಬಾರಿ ಮುಂದೆ.

ಪರಿಹಾರ: ಒಂದು ವೆಬ್ ಸೇವೆ ಬರೆಯಿರಿ (ಮಾದರಿ ಕೋಡ್ ಕಾಣಬಹುದು ಇಲ್ಲಿ) ಒಂದು ಮಾರಾಟಗಾರರ ಹೆಸರಿನಲ್ಲಿ ಜಾರಿಗೆ ಮತ್ತು ಅದನ್ನು ಮರಳಿ ಮಾರಾಟಗಾರರ ವಿವರಗಳು ಹಿಂದಿರುಗಿಸುತ್ತದೆ ನಿಗದಿಪಡಿಸಲಾಗಿದೆ. ನಂತರ, ಜಾಗ ಈ ರೀತಿ ನಿಯೋಜಿಸಲು. ಈ ತುಂಬಾ ನಿಧಾನ ತೋರುತ್ತದೆಯಾದರೂ, ನಾವು ಅದಕ್ಕೆ ಮಾಡಿದಾಗ ಸಾಧನೆ ರಲ್ಲಿ ಯಾವುದೇ discernable ಕೆಲವು ಭಿನ್ನಾಭಿಪ್ರಾಯಗಳಿದ್ದವು 1 ಕ್ಷೇತ್ರ ವಿರುದ್ಧ 8 ಜಾಗ. ಒಂದು ಸೇರಿಸಲಾಗಿದೆ ಬೋನಸ್ ಮಾಹಿತಿ, users get a cool "contacting the server" ಸಿಲೋನ್ ಅವರು ಸೇವೆ ಫಲಿತಾಂಶಗಳು ಮನವಿ ಮತ್ತು ಬಳಸುತ್ತದೆ ರೂಪ ನಿರೀಕ್ಷಿಸಿ ಆದರೆ ಪರಿಣಾಮ.

MOSS: ತೊಡಕು ಕಂಡುಬಂದಿದೆ. (HRESULT ರಿಂದ ಎಕ್ಸೆಪ್ಶನ್: 0x80020009 (DISP_E_EXCEPTION))

ನವೀಕರಿಸಲು: ಈ ಸಮಸ್ಯೆಯ ಮೂಲ ಕಾರಣ ನಿರ್ಧರಿಸಲಾಗುತ್ತದೆ ಎಂದೂ ಹಾಗೂ ಮತ್ತೊಮ್ಮೆ ಮೇಲ್ಮುಖ ಎಂದಿಗೂ.

ನಾವು ಅಭಿವೃದ್ಧಿ ಸೈಟ್ ಎಂದು ಇದ್ದಕ್ಕಿದ್ದಂತೆ ಅನುಷ್ಠಾನದ ಸಮಯದಲ್ಲಿ ಗಮನಕ್ಕೆ, ಎರಡು ಬಳಕೆದಾರರು ಸೈಟ್ ಸಂಗ್ರಹಣೆಯಲ್ಲಿ ಪ್ರವೇಶಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ. ಆ ಖಾತೆಗಳನ್ನು ಮುಖ್ಯ ಸೈಟ್ ಗೆ ದೃಢೀಕರಿಸುವ, ಆದರೆ ಒಂದು ನಿರ್ದಿಷ್ಟ ಸೈಟ್ ಸಂಗ್ರಹಣೆಯಲ್ಲಿ ಪ್ರವೇಶಿಸಲು ಪ್ರಯತ್ನಿಸುವಾಗ, ಅವರು ಕೇವಲ ಒಂದು ಖಾಲಿ ಸ್ಕ್ರೀನ್ ಪಡೆಯಿರಿ. ಪ್ರದರ್ಶಿಸಲಾಗುತ್ತದೆ ಯಾವುದೇ ದೋಷಗಳು, ಕೇವಲ ಬಿಳಿಯ ಖಾಲಿ ಪುಟ.

ನಾವು ಒಂದು ಸೈಟ್ ಸಂಗ್ರಹಣೆಯಲ್ಲಿ ನಿರ್ವಾಹಕರಂತೆ ಪ್ರವೇಶಿಸಲು ಮತ್ತು ಒಂದು ಸೈಟ್ ನಿರ್ವಹಣೆ ಮಾಹಿತಿ ಆ ಬಳಕೆದಾರರ ಒಂದು ಸೇರಿಸಲು ಪ್ರಯತ್ನಿಸಿ ಮತ್ತು ಈ ಸಮಯ, upon pressing "OK", ನಾವು ಈ ಸಂದೇಶವನ್ನು:

ತೊಡಕು ಕಂಡುಬಂದಿದೆ. (HRESULT ರಿಂದ ಎಕ್ಸೆಪ್ಶನ್: 0x80020009 (DISP_E_EXCEPTION))

ನಾವು ಈ ಮತ್ತು ದುರದೃಷ್ಟವಶಾತ್ ಸಂಶೋಧನೆ ಕೆಲವು ಸಮಯ ಕಳೆದರು, ಉಪಯುಕ್ತ ಏನು ವಿಷಯದೊಂದಿಗೆ ಇಲ್ಲ. ಡಯಗ್ನೊಸ್ಟಿಕ್ ಲಾಗ್ ಕೆಲವು ಸಂದೇಶಗಳು ಇದ್ದವು, ಆದರೆ ಇದು ನಿಖರವಾಗಿ ಈ ಸಂಚಿಕೆಯ ಜೊತೆ ಅವುಗಳನ್ನು ಸಾಂಗತ್ಯ ಹಾರ್ಡ್ ಆಗಿತ್ತು.

ಕೊನೆಯಲ್ಲಿ, ನಾವು ಸೈಟ್ ಸಂಗ್ರಹಣೆಯಲ್ಲಿ ಅಳಿಸುವುದು ಮತ್ತು ಅದು ಪುನಃ ರಚಿಸಿದ ಮತ್ತು ಇದು ಪರಿಹಾರ.

ನಾನು ಭವಿಷ್ಯದಲ್ಲಿ ಈ ಉಂಟಾಗುವ ಏನೆಂದು ಲೆಕ್ಕಾಚಾರ ವೇಳೆ, ನಾನು ಈ ಪೋಸ್ಟ್ ಅಪ್ಡೇಟ್ ಮಾಡುತ್ತೇವೆ.

MOSS: ಕಸ್ಟಮ್ ಪಟ್ಟಿಗಳನ್ನು ಮೂಲಕ Iterating ಮತ್ತು InfoPath ಗೆ ಫಿಲ್ಟರ್ ಅಕ್ಷಾಂಶ ಮರಳಿದ

ವ್ಯಾಪಾರ ಸನ್ನಿವೇಶ:

ಬಳಕೆದಾರರು ತಕ್ಷಣವೇ ನಿಖರ ಖರೀದಿ requisitions ಪ್ರವೇಶಿಸಲು ಶಕ್ತಗೊಳಿಸುವ ಒಂದು ವಿಧಾನವನ್ನು ಒದಗಿಸುತ್ತದೆ.

ಉದ್ಯಮ ಸಮಸ್ಯೆ:

ಗ್ರಾಹಕ ನೂರಾರು ಮಾರಾಟಗಾರರಿಗೆ ವ್ಯಾಪಾರ ಮಾಡುತ್ತದೆ.

Vendors are "type" ನಿಶ್ಚಿತ. ಈ ಮಾರಾಟಗಾರರ ಕಂಪ್ಯೂಟರ್ ಸಲಕರಣೆಗಳು ಮಾರಾಟಮಾಡುವ ಅರ್ಥ (ಉದಾ.. ಕಿರುಕಣಿವೆ) ಅಥವಾ ಕಚೇರಿ ಪೂರೈಕೆ (ಉದಾ.. ಸ್ಟೇಪಲ್ಸ್).

ಹೇಗೆ ನಾವು ಖರೀದಿ requisitions ರಚಿಸಲು ಯಾರು ಬಳಕೆದಾರರ ಮಾನ್ಯ ಮಾರಾಟಗಾರರ ಆಯ್ಕೆ ಸಕ್ರಿಯಗೊಳಿಸಲು ಇಲ್ಲ?

ವ್ಯಾಪಾರ ಪರಿಹಾರ:

Differentiate vendors in the system via "type".

Enable users to select the "type" ಉತ್ಪನ್ನದ ಮತ್ತು ನಂತರ ಸೂಕ್ತ ಮಾರಾಟಗಾರರು ಒಂದು ಫಿಲ್ಟರ್ ನೀಡುತ್ತದೆ.

ತಾಂತ್ರಿಕ ಪರಿಹಾರ:

ಒಂದು InfoPath ರೂಪ ಬಳಕೆದಾರರು ಆನ್ಲೈನ್ ಖರೀದಿ requisitions ಪ್ರವೇಶಿಸಲು ಶಕ್ತಗೊಳಿಸುವ ವಿನ್ಯಾಸ ಮಾಡಲಾಗಿದೆ.

ಎರಡು InfoPath ಆಯ್ಕೆ ಪಟ್ಟಿಗಳನ್ನು ನಿಯಂತ್ರಣ ಮಾರಾಟಗಾರರ ಆಯ್ಕೆ. ಪ್ರಥಮ, the user selects a "purchase type". This limits a second selection list to contain only vendors that sell for that purchase type. This is a classic cascading drop-down.

ಅಂತಹ ಮಾರಾಟಗಾರರು ಹೆಸರು ಮಾಹಿತಿ ಮಾರಾಟಗಾರರ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಕಸ್ಟಮ್ ಲಂಬಸಾಲುಗಳನ್ನು ಪಾಚಿಯ ಕಸ್ಟಮ್ ಪಟ್ಟಿಯಲ್ಲಿ ಸಂಗ್ರಹಿಸಲಾಗಿದೆ, address and especially "type".

ಕಸ್ಟಮ್ ಮಾರಾಟಗಾರರ ಪಟ್ಟಿ ಮೂಲಕ iterates ಎಂದು ಬಳಸುತ್ತದೆ ಒಂದು InfoPath ಕ್ಲೈಂಟ್ ಒಂದು ವೆಬ್ ಸೇವೆ ಅಳವಡಿಸಿ, returning only vendors matching a supplied "type".

InfoPath ರೂಪ ಮೂಲಕ ವೆಬ್ ಸೇವೆಗೆ ಆಹ್ವಾನಿಸಲು.

ಕಲಿತ ಪಾಠಗಳು:

  • ಪ್ರಥಮ, ಈ ಮಾರ್ಗದಲ್ಲಿ ಹೋಗಲು ಅಗತ್ಯ ತೋರುತ್ತದೆ. ನಾನು InfoPath ಸಂಪೂರ್ಣವಾಗಿ ಫಿಲ್ಟರ್ ಮಾಡಲು ಮತ್ತು ಇಲ್ಲಿ ಯಾವುದೇ ವೆಬ್ ಸೇವೆಯನ್ನು ಕಾರ್ಯವನ್ನು ಅನ್ನು ಮಾಡಲು ಇಚ್ಚಿಸಿದ್ದನು. ಹೇಗಾದರೂ, ಫಾರ್ಮ್ಸ್ ಸರ್ವರ್ ಅಗತ್ಯವಿರುವ ಫಿಲ್ಟರಿಂಗ್ ಸಾಮರ್ಥ್ಯವನ್ನು ಒದಗಿಸುವುದಿಲ್ಲ. We can put a rule onto a the "type" ಮರು ತೆರೆಯಲು ಮಾರಾಟಗಾರರ ಪ್ರಶ್ನೆಗಳಿವೆ ವಿಂಗಡಿಸಲು ರೂಪದಲ್ಲಿ ಆಯ್ಕೆ ಪಟ್ಟಿ, ಆದರೆ ನಾವು ಅದನ್ನು ಸರಿಯಾಗಿ ಕೆಲಸ ಪಡೆಯಲು ಸಾಧ್ಯವಿಲ್ಲ. ಆದ್ದರಿಂದ, ಇದು ವೆಬ್ ಸೇವೆಯನ್ನು ಅಳವಡಿಸಲು ಅಗತ್ಯ.
  • This is a classic "cascading selection list" InfoPath ಫಾರ್ಮ್ಸ್ ಸರ್ವರ್ ವಿಶ್ವದ ಸಮಸ್ಯೆ ಮತ್ತು ಈ ಪರಿಹರಿಸಲು ಹೇಗೆ ವಿವರಿಸುವ ಅಲ್ಲಿಗೆ ಅನೇಕ ಉತ್ತಮ ಉದಾಹರಣೆಗಳು.
  • ಈ ರೀತಿ ಉಲ್ಲೇಖಿಸಲಾಗಿದೆ ಮಾಡಿದಾಗ ಮಾರಾಟಗಾರರ ಪಟ್ಟಿಯಲ್ಲಿ ಒಂದು ಕಾಲಮ್ ಒಂದು ಖಾಲಿ ಮೌಲ್ಯ ಖಾಲಿ ಸ್ಟ್ರಿಂಗ್ ಮರಳಿ ಇಲ್ಲ: initItem["Vendor Name"]. ಬದಲಿಗೆ, ಇದು ಶೂನ್ಯ ಹಿಂದಿರುಗಿಸುತ್ತದೆ.

ಕೆಲವು ಇತರ ಟಿಪ್ಪಣಿಗಳು:

  • ನಾನು ಒಂದು ಶ್ರೇಣಿಯನ್ನು ಹಿಂದಿರುಗಿ[] ಮಾರಾಟಗಾರರ ನಾನು ArrayList ಹಿಂದಿರುಗಿದ ಕೆಲವು ಕಷ್ಟವಾಗುತ್ತಿತ್ತು ಏಕೆಂದರೆ. InfoPath ಅದರ ಬಗ್ಗೆ ದೂರು ಮತ್ತು ನಾನು ಅದರ ಮೇಲೆ ಹೋರಾಡಲು ಸಮಯ ಅಥವಾ ಇಚ್ಛೆ ಹೊಂದಿರಲಿಲ್ಲ. ಈ, ಸಹಜವಾಗಿ, ಮಾರಾಟಗಾರರ ಒಟ್ಟು ಸಂಖ್ಯೆಯ ಕೃತಕ ಮಿತಿಯನ್ನು ಹಾಕುತ್ತದೆ. ಇದು ಟ್ರಿಮ್ ಕಾರ್ಯಗತಗೊಳಿಸಲು ನನಗೆ ಬಂದೊದಗಿತು() method on the array because I hate the idea of returning back 100’s of null vendors. InfoPath ಲೆಕ್ಕಕ್ಕೆ, ಆದರೆ ಇದು ನನಗೆ nagged. (ಮತ್ತೆ, ಈ ArrayLists ಪ್ರತಿ InfoPath ಹೋರಾಡುವ ಸುಲಭವಾಗಿರುವಂತೆ).
  • ನಾನು GetSpecificVendorByName ಜಾರಿಗೆ() ಕಾರ್ಯ ಜೊತೆಗೆ, ಬೋಧಪ್ರದ ಇರಬಹುದು ಇದು.

ಕೋಡ್:

ಬಳಸಿ System;
ಬಳಸಿ System.Web;
ಬಳಸಿ System.Web.Services;
ಬಳಸಿ System.Web.Services.Protocols;
ಬಳಸಿ Microsoft.SharePoint;
ಬಳಸಿ System.Configuration;

/// <ಸಂಗ್ರಹವಾದ>
///
Vendor Service: Provides vendor related services which today are consumed by an infopath client form.
///
/// History:
/// ——–
/// 07/24/07: Initial coding, Paul J. Gavin of Conchango.
///
/// </ಸಂಗ್ರಹವಾದ>
[WebService(Namespace = "http://www.conchango.com/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
ಸಾರ್ವಜನಿಕ ವರ್ಗ VendorService : System.Web.Services.WebService
{

/// <ಸಂಗ್ರಹವಾದ>
/// Represents a vendor from a custom sharepoint list maintained by MSUSA.
/// </ಸಂಗ್ರಹವಾದ>
ಸಾರ್ವಜನಿಕ ವರ್ಗ ಮಾರಾಟಗಾರ
{
ಸಾರ್ವಜನಿಕ ಮಾರಾಟಗಾರ() { }

ಸಾರ್ವಜನಿಕ ಮಾರಾಟಗಾರ(ಭೂಶಿರ initItem)
{
ವೇಳೆ (! (initItem["Vendor Name"] == ಶೂನ್ಯ)) VendorName = initItem["Vendor Name"].ToString();
ವೇಳೆ (! (initItem["Address 1"] == ಶೂನ್ಯ)) VendorAddress1 = initItem["Address 1"].ToString();
ವೇಳೆ (! (initItem["Address 2"] == ಶೂನ್ಯ)) VendorAddress2 = initItem["Address 2"].ToString();
ವೇಳೆ (! (initItem["City"] == ಶೂನ್ಯ)) VendorCity = initItem["City"].ToString();
ವೇಳೆ (! (initItem["VendorPhone"] == ಶೂನ್ಯ)) VendorPhone = initItem["VendorPhone"].ToString();
ವೇಳೆ (! (initItem["PurchaseType"] == ಶೂನ್ಯ)) VendorType = initItem["PurchaseType"].ToString();
ವೇಳೆ (! (initItem["State"] == ಶೂನ್ಯ)) VendorState = initItem["State"].ToString();
ವೇಳೆ (! (initItem["Zip"] == ಶೂನ್ಯ)) VendorZip = initItem["Zip"].ToString();
ವೇಳೆ (!(initItem["Fax"] == ಶೂನ್ಯ)) VendorFax = initItem["Fax"].ToString();
ವೇಳೆ (!(initItem["SalesRepName"] == ಶೂನ್ಯ)) VendorSalesRepName = initItem["SalesRepName"].ToString();

VendorItemId = initItem.ID; // Unique ID maintained via MOSS.
}

ಸಾರ್ವಜನಿಕ ಇಂಟ್ VendorItemId;
ಸಾರ್ವಜನಿಕ ದಾರ VendorName;
ಸಾರ್ವಜನಿಕ ದಾರ VendorAddress1;
ಸಾರ್ವಜನಿಕ ದಾರ VendorAddress2;
ಸಾರ್ವಜನಿಕ ದಾರ VendorCity;
ಸಾರ್ವಜನಿಕ ದಾರ VendorState;
ಸಾರ್ವಜನಿಕ ದಾರ VendorZip;
ಸಾರ್ವಜನಿಕ ದಾರ VendorPhone;
ಸಾರ್ವಜನಿಕ ದಾರ VendorType;
ಸಾರ್ವಜನಿಕ ದಾರ VendorSalesRepName;
ಸಾರ್ವಜನಿಕ ದಾರ VendorFax;
}

ಸಾರ್ವಜನಿಕ VendorService () {

//Uncomment the following line if using designed components
//InitializeComponent();
}

ಖಾಸಗಿ ಮಾರಾಟಗಾರ[] GenerateTestVendors()
{
ಮಾರಾಟಗಾರ[] resultList;
resultList = ಹೊಸ ಮಾರಾಟಗಾರ[100];

ಮಾರಾಟಗಾರ v;
v = ಹೊಸ ಮಾರಾಟಗಾರ();
v.VendorAddress1 = "v1_address1";
v.VendorAddress2 = "v1_address2";
v.VendorCity = "v1_city";
v.VendorName = "v1_vendorname";
v.VendorPhone = "v1_vendorphone";
v.VendorState = "v1_st";
v.VendorType = "v1_type";
v.VendorZip = "v1_zip";

resultList[0] = v;

v = ಹೊಸ ಮಾರಾಟಗಾರ();

v.VendorAddress1 = "v2_address1";
v.VendorAddress2 = "v2_address2";
v.VendorCity = "v2_city";
v.VendorName = "v2_vendorname";
v.VendorPhone = "v2_vendorphone";
v.VendorState = "v2_st";
v.VendorType = "v2_type";
v.VendorZip = "v2_zip";

resultList[1] = v;

v = ಹೊಸ ಮಾರಾಟಗಾರ();
v.VendorAddress1 = "v3_address1";
v.VendorAddress2 = "v3_address2";
v.VendorCity = "v3_city";
v.VendorName = "v3_vendorname";
v.VendorPhone = "v3_vendorphone";
v.VendorState = "v3_st";
v.VendorType = "v3_type";
v.VendorZip = "v3_zip";

resultList[2] = v;

ಮರಳಿ resultList;

}

[WebMethod]
ಸಾರ್ವಜನಿಕ ಮಾರಾಟಗಾರ GetSpecificVendorById(ಇಂಟ್ vendorId)
{
ದಾರ SpVendorSiteName; // Name of the actual MOSS site that hosts the vendor custom list.
ದಾರ SpVendorListName; // Name of the actual MOSS list containing vendors.

SpVendorSiteName = ConfigurationSettings.AppSettings["VendorListHostingSite"].ToString();
SpVendorListName = ConfigurationSettings.AppSettings["VendorList"].ToString();

ಬಳಸಿ (SPSite site = ಹೊಸ SPSite(SpVendorSiteName))
{

ಬಳಸಿ (SPWeb web = site.OpenWeb())
{

SPList currentList = web.Lists[SpVendorListName];

ಭೂಶಿರ specificItem = currentList.Items[vendorId];

ಮರಳಿ ಹೊಸ ಮಾರಾಟಗಾರ(specificItem);

} // using spweb web = site.openweb()
} // using spsite site = new spsite("http://localhost/mizuho")

}

[WebMethod]
// Assumes that the vendor name is unique, from a business perspective
ಸಾರ್ವಜನಿಕ ಮಾರಾಟಗಾರ GetSpecificVendorByVendorName(ದಾರ vendorName)
{
ದಾರ SpVendorSiteName; // Name of the actual MOSS site that hosts the vendor custom list.
ದಾರ SpVendorListName; // Name of the actual MOSS list containing vendors.

SpVendorSiteName = ConfigurationSettings.AppSettings["VendorListHostingSite"].ToString();
SpVendorListName = ConfigurationSettings.AppSettings["VendorList"].ToString();

ಬಳಸಿ (SPSite site = ಹೊಸ SPSite(SpVendorSiteName))
{
ಬಳಸಿ (SPWeb web = site.OpenWeb())
{

SPList currentList = web.Lists[SpVendorListName];

foreach (ಭೂಶಿರ vendorItem ಇನ್ currentList.Items)
{
ವೇಳೆ (vendorItem["Vendor Name"] == ಶೂನ್ಯ) ಮುಂದುವರಿಸು;

ವೇಳೆ (vendorItem["Vendor Name"].ToString().ಸಮನಾಗಿರುತ್ತದೆ(vendorName))
ಮರಳಿ ಹೊಸ ಮಾರಾಟಗಾರ(vendorItem);
}

ಮಾರಾಟಗಾರ v = ಹೊಸ ಮಾರಾಟಗಾರ();
v.VendorPhone = "not found: " + vendorName;

ಮರಳಿ v;

ಮರಳಿ ಶೂನ್ಯ;

} // using spweb web = site.openweb()
} // using spsite site = new spsite("http://localhost/mizuho")

} // ವಿಧಾನ

[WebMethod]
ಸಾರ್ವಜನಿಕ ಮಾರಾಟಗಾರ[] GetVendorsOfType (ದಾರ FilterType)
{

ದಾರ SpVendorSiteName; // Name of the actual MOSS site that hosts t
he vendor custom list.
ದಾರ SpVendorListName; // Name of the actual MOSS list containing vendors.

SpVendorSiteName = ConfigurationSettings.AppSettings["VendorListHostingSite"].ToString();
SpVendorListName = ConfigurationSettings.AppSettings["VendorList"].ToString();

ಮಾರಾಟಗಾರ[] resultList;
ಇಂಟ್ vendorIndex = 0;
resultList = ಹೊಸ ಮಾರಾಟಗಾರ[1000];

// Initialize the list with a default friendly message.
ಮಾರಾಟಗಾರ v = ಹೊಸ ಮಾರಾಟಗಾರ();
v.VendorName = "Select a vendor type to populate this list.";
resultList[0] = v;

// Convert the filter to lower case for easier string comparison later.
filterType = filterType.ToLower();

// If the filter type passed is "test", generate some simple data.
#region Filter type = "test"
ವೇಳೆ (filterType.Equals("test"))
ಮರಳಿ GenerateTestVendors();
#endregion

ವೇಳೆ (ನಿಜವಾದ)
{
ಬಳಸಿ (SPSite site = ಹೊಸ SPSite(SpVendorSiteName))
{
ಬಳಸಿ (SPWeb web = site.OpenWeb())
{

v = ಶೂನ್ಯ;

SPList currentList = web.Lists[SpVendorListName];

// Iterate through all the items in the vendor list.
foreach (ಭೂಶಿರ vendorItem ಇನ್ currentList.Items)
{

ದಾರ lowerVendorType;

lowerVendorType = vendorItem["PurchaseType"].ToString().ToLower();
lowerVendorType = lowerVendorType.Substring(3);

ವೇಳೆ (lowerVendorType.Equals(FilterType))
{
resultList[vendorIndex ] = ಹೊಸ ಮಾರಾಟಗಾರ(vendorItem);
}
} // iterating thru all the vendors in the list


ಮರಳಿ TrimVendorArray(vendorIndex, resultList);
// return resultList;

} // using spweb web = site.openweb()
} // using spsite site = new spsite("http://localhost/mizuho")

} // if true

ಮರಳಿ ಶೂನ್ಯ;
}

ಖಾಸಗಿ ಮಾರಾಟಗಾರ[] TrimVendorArray(ಇಂಟ್ newsize, ಮಾರಾಟಗಾರ[] originalVendorArray)
{
ಮಾರಾಟಗಾರ[] trimmedArray;

ವೇಳೆ (newsize == 0) newsize = 1;
trimmedArray = ಹೊಸ ಮಾರಾಟಗಾರ[newsize];

ಇಂಟ್ currentCounter = 0;

ಗೆ (currentCounter = 0; currentCounter < newsize; currentCounter )
{
trimmedArray[currentCounter] = originalVendorArray[currentCounter];
}

ಮರಳಿ trimmedArray;

}
}

MOSS: InfoPath ಡೀಬಗ್ ಅವಲೋಕನಗಳು

InfoPath ರಚನೆಯಲ್ಲಿ ಸರ್ವರ್ ದೋಷ ಸಂದೇಶಗಳನ್ನು ದಾರಿ ತಪ್ಪಿಸುತ್ತದೆ.

ಒಂದು InfoPath ರಚನೆಯಲ್ಲಿ ಅಭಿವೃದ್ಧಿಪಡಿಸುವಾಗ, ನಾನು MOSS ಸರ್ವರ್ ಅದನ್ನು ಪೋಸ್ಟ್ ಮತ್ತು ರಚನೆಯಲ್ಲಿ ಪ್ರವೇಶಿಸಲು ಎಂದು. ರಚನೆಯಲ್ಲಿ ವಿವರಗಳಿಗಾಗಿ ನನಗೆ ವಿಂಡೋಸ್ ಈವೆಂಟ್ ಲಾಗ್ ತೋರುತ್ತಿರುವಂತೆ ಒಂದು ದಾರಿತಪ್ಪಿಸುವ ದೋಷ ಸಂದೇಶವನ್ನು ಲೋಡ್ ತದನಂತರ ರಚಿಸಲು ಪ್ರಾರಂಭಿಸುತ್ತದೆ. ವಾಸ್ತವವಾಗಿ, ಇಲ್ಲ ಸಂದೇಶವನ್ನು ವಿಂಡೋಸ್ ಈವೆಂಟ್ ಲಾಗ್ ಗೆ ಬರೆಯಲ್ಪಟ್ಟಿತು. ಅದಕ್ಕಿಂತ ಹೆಚ್ಚಾಗಿ, ಸಂದೇಶ MOSS ASCII ಡಯಗ್ನೊಸ್ಟಿಕ್ ಲಾಗ್ ಕಳುಹಿಸಲಾಗಿದೆ. ನೀವು ಕೇಂದ್ರ ಸೇವೆಗಳು ಆಡಳಿತ ಮೂಲಕ ಎಂದು ಕೆಳಗೆ ಟ್ರ್ಯಾಕ್ ಮಾಡಬಹುದು.

ನಿಮ್ಮ ಕಾಲುಗಳ ಮೇಲೆ ತ್ವರಿತ ಅಗತ್ಯವಿದೆ. MOSS ಲಾಗ್ ಕಡತಕ್ಕೆ ಬರೆಯಲು ಇಷ್ಟಗಳು, ಆಗಾಗ ಮತ್ತು ಶಬ್ದ ಬಾಹುಳ್ಯದಿಂದ. This can be trimmed but the default log writing behavior is "everything as quickly as possible".

MOSS: ಕಸ್ಟಮ್ ಪಟ್ಟಿಯನ್ನು ನವೀಕರಿಸಲಾಗುತ್ತಿದೆ

SDK ಮೂಲಕ ಕಸ್ಟಮ್ ಪಟ್ಟಿಗಳನ್ನು ಅಪ್ಡೇಟ್ ಹಲವಾರು ಉತ್ತಮ ಉದಾಹರಣೆಗಳಿವೆ. ಇಲ್ಲಿ ಇನ್ನೂ ಇನ್ನೊಂದು.

ಉದ್ಯಮ ಸಮಸ್ಯೆ: InfoPath ರಚನೆಯಲ್ಲಿ ಬಳಕೆದಾರರು ಆನ್ಲೈನ್ ಖರೀದಿ requisitions ನಮೂದಿಸಿ ಸಾಧ್ಯವಾಗುವಂತಹ ವಿನ್ಯಾಸ ಮಾಡಲಾಗಿದೆ. ಪಿಒ ನಿಯೋಜಿಸು ಸಂಖ್ಯೆಗಳನ್ನು ಸಾಂಪ್ರದಾಯಿಕ ಅನುಕ್ರಮ ಆಧಾರಿತ ಅಂಕಿ ಮೌಲ್ಯಗಳು ಮತ್ತು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಲೆಕ್ಕ ಮಾಡಬೇಕು.

ವ್ಯಾಪಾರ ಪರಿಹಾರ: ಎರಡು ಕಂಬಗಳನ್ನು ಹೊಂದಿದ್ದು ಕಸ್ಟಮ್ MOSS ಪಟ್ಟಿ ರಚಿಸಿ: "ControlField" and "ControlValue". ಮೌಲ್ಯ ಕಾಲಮ್ ಮುಂದಿನ ಖರೀದಿ ನಿಯೋಜಿಸು ಹೊಂದಿದೆ. Note that the generic "control" ಕನ್ವೆನ್ಷನ್ ಹೆಸರಿಸುವ ಅಗತ್ಯವಿದೆ ಎಂದು ಬಳಸಬಹುದು ಎಂದು ಭವಿಷ್ಯದ ನಿಯಂತ್ರಣ ಜಾಗ ಒದಗಿಸುತ್ತದೆ.

ತಾಂತ್ರಿಕ ಪರಿಹಾರ: InfoPath ಕ್ಲೈಂಟ್ ಮೂಲಕ ಪ್ರವೇಶಿಸಲು ವೆಬ್ ಸೇವೆಯನ್ನು ರಚಿಸಿ. ವೆಬ್ ಸೇವೆಯನ್ನು ಮುಂದಿನ ಖರೀದಿ ನಿಯೋಜಿಸು ಸಂಖ್ಯೆ ಮತ್ತು ನವೀಕರಣಗಳನ್ನು ಪಟ್ಟಿ ಮೌಲ್ಯವನ್ನು ಹಿಂದಿರುಗಿಸುತ್ತದೆ.

ಕಲಿತ ಪಾಠಗಳು:

  • InfoPath ರಚನೆಯಲ್ಲಿ ಡೇಟಾ ಮೂಲ ಮಾಹಿತಿ ಈ ವೆಬ್ ಸೇವೆ ಸೇರಿಸುವಾಗ, ನಾನು ಅವಶ್ಯಕವೆಂದು ಒಂದು UDC ಇದನ್ನು ಪರಿವರ್ತಿಸಿ ಮತ್ತು ಒಂದು ಡೇಟಾ ಸಂಪರ್ಕವನ್ನು ಗ್ರಂಥಾಲಯದ ಅದನ್ನು ಸಂಗ್ರಹಿಸಲು ಕಂಡು.
  • ನಾನು ಕೂಡ ಅವಶ್ಯಕವೆಂದು ಕೇಂದ್ರ ಸೇವೆಗಳು ಆಡಳಿತ ಮೂಲಕ ಅಡ್ಡ ಡೊಮೇನ್ ಸ್ಕ್ರಿಪ್ಟಿಂಗ್ ಸಕ್ರಿಯಗೊಳಿಸಲು ಕಂಡುಬಂದಿಲ್ಲ // ಅಪ್ಲಿಕೇಶನ್ ನಿರ್ವಹಣೆ // ರೂಪ ಸರ್ವರ್ ಕಾನ್ಫಿಗರೇಶನ್.
  • ಮೊದಲ ಬಾರಿಗೆ ರೂಪ ವೆಬ್ ಸೇವೆಯನ್ನು ಪ್ರವೇಶಿಸಲು ಪ್ರಯತ್ನಿಸಿದರು, ಇದು ಸ್ವಲ್ಪ ತೆಗೆದುಕೊಳ್ಳುತ್ತದೆ ಮತ್ತು ಸಂದರ್ಭದಲ್ಲಿ, ಇದನ್ನು ಟೈಮ್ ಎಂದು. ನಾನು ಕಾಲಾವಧಿ ಸೆಟ್ಟಿಂಗ್ಗಳನ್ನು ವಿಸ್ತರಿಸಲು ರೂಪ ಸರ್ವರ್ ಕಾನ್ಫಿಗರೇಶನ್ ರಲ್ಲಿ ಹೊಂದಾಣಿಕೆಗಳು fiddled ಮತ್ತು ಸಹಾಯ ಕಾಣುತ್ತದೆ.

ಕೋಡ್:

ಬಳಸಿ System;
ಬಳಸಿ System.Web;
ಬಳಸಿ System.Web.Services;
ಬಳಸಿ System.Web.Services.Protocols;
ಬಳಸಿ Microsoft.SharePoint;
ಬಳಸಿ System.Configuration;

[WebService(Namespace = "http://www.conchango.com/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
ಸಾರ್ವಜನಿಕ ವರ್ಗ PoService : System.Web.Services.WebService
{
ಸಾರ್ವಜನಿಕ PoService () {

//Uncomment the following line if using designed components
//InitializeComponent();
}

/// <ಸಂಗ್ರಹವಾದ>
/// Obtain the next PO number from the sharepoint po number control list.
/// Increment the PO number in that list.
/// </ಸಂಗ್ರಹವಾದ>
/// <ಆದಾಯ></ಆದಾಯ>
[WebMethod]
ಸಾರ್ವಜನಿಕ ದಾರ GetNextPoNumber()
{
ದಾರ SpPoControlSiteName; // Name of the actual MOSS site that hosts the PO Control list.
ದಾರ SpPoControlListName; // Name of the actual MOSS list containing the Po control.

SpPoControlSiteName = ConfigurationSettings.AppSettings["PoControlListHostingSite"].ToString();
SpPoControlListName = ConfigurationSettings.AppSettings["PoControlList"].ToString();

ದಾರ nextPoReqNumber = "xyzzy";

ಬಳಸಿ (SPSite site = ಹೊಸ SPSite(SpPoControlSiteName))
{
ಬಳಸಿ (SPWeb web = site.OpenWeb())
{

SPList currentList = web.Lists[SpPoControlListName];

foreach (ಭೂಶಿರ controlItem ಇನ್ currentList.Items)
{

ವೇಳೆ (((ದಾರ)controlItem["ControlField"]).ಸಮನಾಗಿರುತ್ತದೆ("NextPoNumber"))
{
nextPoReqNumber = (ದಾರ)controlItem["ControlValue"];

ಇಂಟ್ int_nextPoReqNumber;
int_nextPoReqNumber = ಪರಿವರ್ತಿಸಿ.ToInt32(nextPoReqNumber);

int_nextPoReqNumber ;

controlItem["ControlValue"] = int_nextPoReqNumber;
controlItem.Update();
}

} // Locating, reading and updating the PO number in the list.


} // using spweb web = site.openweb()
} // using spsite site = new spsite("http://localhost/mizuho")

ಮರಳಿ nextPoReqNumber;

}
}