வகை பதிவுகள்: பாசி

பாசி மேம்பட்ட தேடல் விருப்ப — வழக்கு மேம்பட்ட தேடல் எக்ஸ்எஸ்எல்டி உள்ள விஷயம் இல்லை

நான் அடிக்கடி மேம்பட்ட தேடல் எக்ஸ்எஸ்எல்டி மாற்ற வேண்டாம், நான் சிறு மலைகள் ஒவ்வொரு முறையும் ஏறும் போல் அது தெரிகிறது.

என் புதிய பாடம் இது: ஒரு பத்தியில் குறிப்பிடும் போது வழக்கு விஷயமாக. என் மேம்பட்ட தேடல், நான் இதை பத்தி வரையறுக்கப்பட்ட:

<வேர் xmlns:xsi="HTTP://www.w3.org/2001/XMLSchema-instance">
<
பத்திகள்>
<
பத்தி பெயர்="GafTrainingInvoiceNumber" />
<
பத்தி பெயர்="GafTrainingInvoiceLocation" />
<
பத்தி பெயர்="WorkId"/>
<
பத்தி பெயர்="வரிசை"/>
<
பத்தி பெயர்="தலைப்பு"/>
<
பத்தி பெயர்="ஆசிரியர்"/>
<
பத்தி பெயர்="அளவு"/>
<
பத்தி பெயர்="வழி"/>
<
பத்தி பெயர்="விளக்கம்"/>
<
பத்தி பெயர்="எழுது"/>
<
பத்தி பெயர்="க்கு"/>
<
பத்தி பெயர்="CollapsingStatus"/>
<
பத்தி பெயர்="HitHighlightedSummary"/>
<
பத்தி பெயர்="HitHighlightedProperties"/>
<
பத்தி பெயர்="Contentclass"/>
<
பத்தி பெயர்="IsDocument"/>
<
பத்தி பெயர்="PictureThumbnailURL"/>
</
பத்திகள்>
</
வேர்>

விலைப்பட்டியல் எண் மற்றும் விலைப்பட்டியல் இடம் காட்டுகிறது என்று XLST இருந்தது:

<>
Training Invoice Number: <XSL:மதிப்பு தேர்ந்தெடு="GafTrainingInvoiceNumber"/>
<
Br></Br>
Training Invoice Location: <XSL:மதிப்பு தேர்ந்தெடு="GafTrainingInvoiceLocation"/>
</
>

எனினும், தேர்ந்தெடுக்கப்பட்ட அனைத்து கீழ் வழக்கு சொத்து குறிக்க வேண்டும், போன்ற:

<>
Training Invoice Number: <XSL:மதிப்பு தேர்ந்தெடு="gaftraininginvoicenumber"/>
<
Br></Br>
Training Invoice Location: <XSL:மதிப்பு தேர்ந்தெடு="gaftraininginvoicelocation"/>
</
>


Until I corrected that, search results showed the labels (அதாவது. "Training Invoice Number") but no data.

பாசி / InfoPath படிவங்கள் சர்வர் (InfoPath 2007) கீழ்தோன்றும் பட்டியலில் செயல்திறன்

கூடுதல் வகை: InfoPath

சுருக்கம்: ஒரு InfoPath 2007 ஒரு பாசி சர்வர் பயன்படுத்தப்பட்டன அமைக்க விருப்ப பாசி பட்டியலில் கட்டி விற்பனையாளர்கள் ஒரு கீழ்தோன்றும் பட்டியலில் வழங்குகிறது. ஒரு விற்பனையாளர் தேர்வு மீது, விதிகள் போன்ற விற்பனை பிரதிநிதிகள் பெயர் உரை துறைகள் ஒரு சில புல மதிப்புகள் ஒதுக்க, முகவரி, நகரம், நிலை, ZIP மற்றும் தொலைபேசி. செயல்திறன் கொடுமையாக இருக்கிறது. We notice that performance gets worse (ஒரு அல்லாத நேர்கோட்டு பாணியில்) ஒவ்வொரு கூடுதல் துறையில் நாம் இந்த வழியில் புதுப்பிக்க. அதாவது,, நாம் விற்பனை பிரதிநிதிகள் பெயரை புதுப்பிக்க என்றால், இது எடுக்கிறது [x] நேரம் அளவு. நாங்கள் விற்பனை பிரதிநிதிகள் புதுப்பிக்க என்றால், முகவரி 1, முகவரி 2, நகரம், நிலை, ஜிப், இது எடுக்கிறது 10 முறை இனி.

கரைசல்: ஒரு வலை சேவையை எழுத (மாதிரி குறியீடு காணலாம் இங்கே) ஒரு விற்பனையாளர் என்ற பெயரில் இயற்றப்பட்டு அது மீண்டும் விற்பனையாளர் விவரங்களை கொடுக்கிறது என்று. அப்பொழுது, துறைகள் இந்த வழியில் ஒதுக்க. இந்த மிக மெதுவாக தெரிகிறது என்றாலும், நாம் ஒதுக்கப்படும் போது செயல்திறன் எந்த discernable வேறுபாடு இருந்தது 1 துறையில் எதிராக 8 துறைகள். ஒரு சேர்க்கப்பட்ட போனஸ் போன்ற, users get a cool "contacting the server" Cylon அவர்கள் சேவை முடிவுகள் செயலாக்க மற்றும் நுகர்வு வடிவம் காத்திருக்க போது விளைவு.

பாசி: விதிவிலக்கு நிகழ்ந்தது. (HRESULT இருந்து விதிவிலக்கு: 0x80020009 (DISP_E_EXCEPTION))

புதுப்பிப்பு: இந்த பிரச்சினையின் அடிப்படை காரணத்தை உறுதியாக அதை மீண்டும் வெளிக்கொணர்வது இல்லை.

நாம் ஒரு வளர்ச்சி தளம் என்று திடீரென்று செயல்படுத்த போது கவனிக்க, இரு செய்த ஒரு தளம் சேகரிப்பு அணுக முடியவில்லை. அந்த கணக்குகள் முக்கிய தளம் அங்கீகரிக்க முடியாது, ஆனால் ஒரு குறிப்பிட்ட தளத்தில் சேகரிப்பு அணுக முயற்சிக்கும் போது, அவர்கள் ஒரு வெற்று திரையில் கிடைக்கும். காட்டப்படும் எந்த பிழைகள், ஒரு வெள்ளை வெற்று பக்கம்.

நாம் ஒரு தளத்தில் சேகரிப்பு நிர்வாகியாக உள்நுழைந்து ஒரு தளத்தில் நிர்வாக அந்த பயனர் ஒன்று சேர்க்க முயற்சி இந்த நேரம், upon pressing "OK", இந்த செய்தி கிடைக்கும்:

விதிவிலக்கு நிகழ்ந்தது. (HRESULT இருந்து விதிவிலக்கு: 0x80020009 (DISP_E_EXCEPTION))

நாம் இந்த துரதிருஷ்டவசமாக ஆராய்ச்சி சிறிது நேரம் கழித்த, பயனுள்ள எதையும் கொண்டு வரவில்லை. சோதனை பதிவு சில செய்திகளை இருந்தன, ஆனால் அது சரியாக இந்த பிரச்சினை அவர்களை தொடர்பு கடினமாக இருந்தது.

முடிவில், நாம் தளத்தில் சேகரிப்பு நீக்குதல் மற்றும் அதை மீண்டும் உருவாக்கப்பட்ட மற்றும் அது தீர்க்கப்பட.

நான் எதிர்காலத்தில் இந்த ஏற்படுகிறது என்ன கண்டுபிடிக்க என்றால், நான் இந்த புதுப்பிக்க வேண்டும்.

பாசி: விருப்ப பட்டியலை வழியே தேடி அலசுவதற்கு மற்றும் InfoPath வடிகட்டப்பட்டு தரவு திரும்பும்

வணிக நிலைத்தன்மை:

பயனர் விரைவாக துல்லியமான கொள்முதல் விவரங்கள் நுழைய உதவும் ஒரு முறை வழங்க.

வணிக சிக்கல்:

வாடிக்கையாளர் பல நூறு விற்பனையாளர்களிடம் வணிக செய்கிறது.

Vendors are "type" குறிப்பிட்ட. இந்த ஒரு விற்பனையாளர் கணினி உபகரணங்கள் விற்கும் பொருள் (E.G. பள்ளத்தாக்கு) அல்லது அலுவலக பொருட்கள் (E.G. ஸ்டேபிள்ஸ்).

எப்படி நாம் வாங்கும் விவரங்கள் உருவாக்க யார் இறுதியில் பயனர் சரியான விற்பனையாளர் தேர்ந்தெடுக்க உதவும்?

வணிக தீர்வு:

Differentiate vendors in the system via "type".

Enable users to select the "type" தயாரிப்பு மற்றும் பிறகு பொருத்தமான விற்பனையாளர்கள் ஒரு வடிகட்டி தொகுப்பு வழங்கும்.

தொழில்நுட்ப தீர்வு:

ஒரு InfoPath வடிவம் பயனர் ஆன்லைன் கொள்முதல் விவரங்கள் நுழைய உதவும் வடிவமைக்கப்பட்டுள்ளது.

இரண்டு 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".

விருப்ப விற்பனையாளர் பட்டியல் மூலம் பல செயல்களை என்று எடுத்துக்கொள்ளும் ஒரு 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.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.
/// </சுருக்கம்>
பொது வர்க்கம் விற்பனையாளர்
{
பொது விற்பனையாளர்() { }

பொது விற்பனையாளர்(SPItem 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];

SPItem 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 (SPItem 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.
#பகுதி 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 (SPItem 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;

}
}