BAB PANYÒL / InfoPath fòmilè sèvè (InfoPath 2007) ane ke yo bliye-desann lis pèfòmans

Kategori supplémentaires: InfoPath

Rezime: Yon InfoPath 2007 fòm pou yon sèvè bab PANYÒL bay yon lis ane ke yo bliye-desann de fournisseurs mare a yon lis personnalisé bab PANYÒL. Sou sélection yon machann, règles Deziyen yon valè jaden pou yon ti ponyen tèks jaden tankou kliyan ki pou vann repwezantan non, adrès, vil, eta, postal ak nimewo telefòn. Pèfòmans tèrib. Nou santi ke pèfòmans vin pi mal (a la mad yon ki pa lineyè) pou chak lòt jaden nou à wout sa a. C'est-à-dire, Si nou tout à la vente repwezantan non, li pran [x] kantite tan. Si nou à repwezantan kliyan ki pou vann, 1, 2, vil, eta, postal, li pran 10 fwa plus.

Solisyon: Ekri yon sèvis entènèt (echantiyon kòd ka jwenn Isit) sa te pase nan non yon machann Et renvoie tounen detay machann. apre, Deziyen yon jaden wout sa a. Malgre ke sa a twò semble lent, te gen okenn discernable diferans nan pèfòmans lè nou plase 1 jaden à 8 jaden. Kòm yon bonus te ajoute, utilisateurs jwenn yon frèt "kontakte sèvè a" Cylon effet pandan ke yap tann pou fòm pou envoke Et utiliser sèvis la ke rezilta yo.

BAB PANYÒL: Eksepsyon ki te fèt. (Eksepsyon de HRESULT: 0x 80020009 (DISP_E_EXCEPTION))

AJOU: Nou pa janm detèmine rasin kòz pwoblèm sa a e li pa janm sifas ankò.

Nou remake pandan aplikasyon de yon direksyon devlopman sa rete konsa, utilisateurs de pa gen anyen pou accès yon sit ranmase kèt. Comptes sa kapab s' al sou prensipal, Men, lè ap eseye pou jwenn yon koleksyon an patikilye sit, yo jwenn jis yon écran vid. Pa erreurs affiche, jis yon blan blanch paj.

Nou lògin kòm yon sit koleksyon admin Et eseye ajoute yonn nan moun sa tankou yon sit admin Et fwa sa a, sou presan "Bon", nou resevwa mesaj sa a:

Eksepsyon ki te fèt. (Eksepsyon de HRESULT: 0x 80020009 (DISP_E_EXCEPTION))

Nou te pase kèk tan sou sa Et malerezman, pa t vini ak yon bagay itil. Te gen kèk mesaj nan ak demi lit dyagnostik, Men, li te di pou exactement en yo ak bagay sa a.

Nan fen, nou efase koleksyon direksyon an ak recréée li ak sa rezoud li.

Si mwen evalye sa a sa nan tan kap vini, M ap à pòs sa a.

BAB PANYÒL: Effectuées par lis personnalisés Et retounen filtrage done pou InfoPath

Biznis Scénario:

Bay yon metòd sa aux utilisateurs pou antre précis acha bons rapidement.

Pwoblèm biznis:

Kliyan la fè biznis ak plizyè santèn fournisseurs.

Fournisseurs sont "jan de" espesifik. Sa vle di yon machann vann ekipman konpitè (par. Dell) ou biwo ekipman (par. Staples).

Ki jan nou pèmèt fin utilisateurs ki kreye acha bons chwazi yon machann valab?

Solisyon biznis:

Différence fournisseurs nan sistèm via "jan de".

Pèmèt moun pou yo chwazi "jan de" de pwodwi Et donk bay yon ansanm filtrage de fournisseurs apwopriye.

Solisyon teknik:

Yon fòm InfoPath ki te fèt aux utilisateurs pou antre sou liy achte demandes.

De InfoPath te chwazi lis kontwole chwazi machann. Premye, moun kap itilize li an, sélectionne yon "acha tip". Sa limites yon dezyèm lis chwazi pou genyen sèlman fournisseurs ki vann pou sa jan akizisyon de. Sa se yon klasik en ane ke yo bliye-desann.

Fournisseurs yo sere nan yon bab PANYÒL lis personnalisé ak personnalisé colonnes pou machann attributs tankou non, adrès Et sitou "jan de".

Implement, yon sèvis entènèt pou yon kliyan InfoPath an pou pran sa une à personnalisé machann lis, retounen sèlman fournisseurs asòti yon fournis "jan de".

Envoke sèvis entènèt la via fòm InfoPath.

Leson Appris:

  • Premye, li sanble nesesè pou ale wout sa a. Mwen ta pwefere fè filtrage tout nan InfoPath, pa kreye yon sit sèvis fonctionnalités isit la. Sepandan, sèvè fòmilè yo pa bay kapasite filtraj mande l la. Nou kapab mete yon regleman sou yon "jan de" lis chwazi nan fòm pou asye de re-louvri la requête machann, Men, nou pa ka pran l' pou travay correctement. Se pou sa, li te fèt pou aplike pou sèvis entènèt la.
  • Sa se yon klasik "en chwazi lis" pwoblèm nan InfoPath a formulaires sèvè monde Et genyen anpil bon ekzanp yo la pou kapab eksplike kijan pou rezoud sa.
  • Yon valè vid pou yon kolòn machann lis nan pa retounen yon vid chaîne lè référencé kon sa: initItem["Machann non"]. Alaplas de, li retounen yon Nil.

Kèk lòt nòt:

  • M retounen nan yon tableau[] de fournisseurs paske mwen te gen kèk difikilte pou retounen yon ArrayList. InfoPath te se sou zafè sa Et mwen pa t gen tan ou an pant pou batay sou li. Sa a, Men wi, mete yon fo fwontyè sou an total kantite ke ti machann kap. Li tou forcé m' bezwen aplike jiskisi yon bòdu() metòd sou etalaj a paske mwen rayi lide pou retounen nan do 100 a nan fournisseurs Nil. InfoPath pa swen, Men, li te nagged ban mwen. (Ankò, sa a te vin pi fasil pase goumen InfoPath sou ArrayLists).
  • Mwen te aplike yon GetSpecificVendorByName() fonksyon osi byen, ki ka intéressant.

Kòd la:

itilize Sistèm;
itilize System.Web;
itilize System.Web.Services;
itilize System.Web.Services.Protocols;
itilize Microsoft.SharePoint;
itilize System.Configuration;

/// <rezime>
///
Sèvis machann: Bay machann ki gen rapò ak sèvis ki jòdi a consommée pa yon fòm kliyan an infopath.
///
/// Istwa:
/// ——–
/// 07/24/07: Inisyal codage, Paul J. Gavin de Conchango.
///
/// </rezime>
[WebService(Namespace = "http://www.conchango.com/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
piblik klas VendorService : System.Web.Services.WebService
{

/// <rezime>
/// Repwezante yon machann nan yon lis sharepoint repòtaj ki toujou kenbe pa MSUSA.
/// </rezime>
piblik klas Machann
{
piblik Machann() { }

piblik Machann(SPItem initItem)
{
Si (! (initItem["Machann non"] == null)) VendorName = initItem["Machann non"].ToString();
Si (! (initItem["Adrese 1"] == null)) VendorAddress1 = initItem["Adrese 1"].ToString();
Si (! (initItem["Adrese 2"] == null)) VendorAddress2 = initItem["Adrese 2"].ToString();
Si (! (initItem["Vil"] == null)) VendorCity = initItem["Vil"].ToString();
Si (! (initItem["VendorPhone"] == null)) VendorPhone = initItem["VendorPhone"].ToString();
Si (! (initItem["PurchaseType"] == null)) VendorType = initItem["PurchaseType"].ToString();
Si (! (initItem["Eta"] == null)) VendorState = initItem["Eta"].ToString();
Si (! (initItem["Postal"] == null)) VendorZip = initItem["Postal"].ToString();
Si (!(initItem["Fakse"] == null)) VendorFax = initItem["Fakse"].ToString();
Si (!(initItem["SalesRepName"] == null)) VendorSalesRepName = initItem["SalesRepName"].ToString();

VendorItemId = initItem.ID; // Inik Didantite toujou kenbe via bab PANYÒL.
}

piblik int VendorItemId;
piblik filè VendorName;
piblik filè VendorAddress1;
piblik filè VendorAddress2;
piblik filè VendorCity;
piblik filè VendorState;
piblik filè VendorZip;
piblik filè VendorPhone;
piblik filè VendorType;
piblik filè VendorSalesRepName;
piblik filè VendorFax;
}

piblik VendorService () {

//Supprimez apwe liy si w ap itilize fèt konpozan
//InitializeComponent();
}

pwive Machann[] GenerateTestVendors()
{
Machann[] resultList;
resultList = nouvo Machann[100];

Machann v;
v = nouvo Machann();
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 = nouvo Machann();

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 = nouvo Machann();
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;

retounen resultList;

}

[WebMethod]
piblik Machann GetSpecificVendorById(int vendorId)
{
filè SpVendorSiteName; // Non aktyèl bab PANYÒL sit la ki hôtes machann lis koutim.
filè SpVendorListName; // Non aktyèl bab PANYÒL lis ki gen fournisseurs.

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

itilize (SPSite kote ki gen = nouvo SPSite(SpVendorSiteName))
{

itilize (SPWeb Web = direksyon. OpenWeb())
{

Splist.update() currentList = web. Lis[SpVendorListName];

SPItem specificItem = currentList.Items[vendorId];

retounen nouvo Machann(specificItem);

} // w ap itilize entènèt spweb = site.openweb()
} // w ap itilize kote ki gen spsite = spsite nouvo("http://localhost/mizuho")

}

[WebMethod]
// Que la rele machann inik, nan yon pèspektiv nan afè biznis
piblik Machann GetSpecificVendorByVendorName(filè être)
{
filè SpVendorSiteName; // Non aktyèl bab PANYÒL sit la ki hôtes machann lis koutim.
filè SpVendorListName; // Non aktyèl bab PANYÒL lis ki gen fournisseurs.

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

itilize (SPSite kote ki gen = nouvo SPSite(SpVendorSiteName))
{
itilize (SPWeb Web = direksyon. OpenWeb())
{

Splist.update() currentList = web. Lis[SpVendorListName];

foreach (SPItem vendorItem nan currentList.Items)
{
Si (vendorItem["Machann non"] == null) «««;

Si (vendorItem["Machann non"].ToString().Fèt pou l egal(être))
retounen nouvo Machann(vendorItem);
}

Machann v = nouvo Machann();
v.VendorPhone = "pa te jwenn: " + être;

retounen v;

retounen null;

} // w ap itilize entènèt spweb = site.openweb()
} // w ap itilize kote ki gen spsite = spsite nouvo("http://localhost/mizuho")

} // metòd

[WebMethod]
piblik Machann[] GetVendorsOfType (filè filterType)
{

filè SpVendorSiteName; // Non aktyèl bab PANYÒL sit la ki hôtes t
lis repòtaj li machann.
filè SpVendorListName; // Non aktyèl bab PANYÒL lis ki gen fournisseurs.

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

Machann[] resultList;
int vendorIndex = 0;
resultList = nouvo Machann[1000];

// Initialiser ansanm ak yon mesaj amikal defo.
Machann v = nouvo Machann();
v.VendorName = "Chwazi yon machann tip pou peple lis sa a.";
resultList[0] = v;

// Konvèti filtè an pou yo ka pi ba pou vin pi fasil kòd konpare pi ta.
filterType = filterType.ToLower();

// Si jan filtre de te pase se "tès", pwodui kèk done senp.
#rejyon Filtre tip = "tès"
Si (filterType. À(tès""))
retounen GenerateTestVendors();
#endregion

Si (vre)
{
itilize (SPSite kote ki gen = nouvo SPSite(SpVendorSiteName))
{
itilize (SPWeb Web = direksyon. OpenWeb())
{

v = null;

Splist.update() currentList = web. Lis[SpVendorListName];

// Une nan tout atik nan lis machann.
foreach (SPItem vendorItem nan currentList.Items)
{

filè lowerVendorType;

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

Si (lowerVendorType. À(filterType))
{
resultList[vendorIndex ] = nouvo Machann(vendorItem);
}
} // effectuées thru tout fournisseurs nan lis la


retounen TrimVendorArray(vendorIndex, resultList);
// retounen resultList;

} // w ap itilize entènèt spweb = site.openweb()
} // w ap itilize kote ki gen spsite = spsite nouvo("http://localhost/mizuho")

} // si tout bon

retounen null;
}

pwive Machann[] TrimVendorArray(int newsize, Machann[] originalVendorArray)
{
Machann[] trimmedArray;

Si (newsize == 0) newsize = 1;
trimmedArray = nouvo Machann[newsize];

int currentCounter = 0;

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

retounen trimmedArray;

}
}

BAB PANYÒL: Meteyorolojik sou InfoPath débogage

Fòm InfoPath sèvè erreur mesaj sont trompeuse.

Pandan devlopman yon fòm InfoPath, Mwen ta pòs li pou bab PANYÒL sèvè Et accès fòm. Fòm lan pwal kòmanse e jenere lè sa a yon trompeuse mesaj erreur ki t' ap m' fennèt journal evènman pou tout detay konsènan. an reyalite, mesaj pa te ekri pou journal evènman fenèt. Non, mesaj te voye pou bab PANYÒL ascii journal dyagnostik. Ou kapab foule ki anba via administrasyon an sèvis santral.

Ou bezwen prese vin kanpe sou de pye ou. Bab PANYÒL Aime pou yo ekri a fichier journal, anpil fwa Et verbosely. Sa ka ajustée men defo journal ekri konpòtman se "tout sa ke posib".

BAB PANYÒL: Mete kanpe sou pye yon lis personnalisé

Genyen anpil egzanp bon de lis personnalisé via SDK an mete kanpe sou pye. Isit la se yon lòt.

Pwoblèm biznis: Fòm InfoPath ki te fèt aux utilisateurs pou antre sou liy achte demandes. LA demande anpil moun ta dwe sekans tradisyonèl baze entier valè Et calculé otomatikman.

Solisyon biznis: Kreye yon repòtaj lis bab PANYÒL ki contenant colonnes de: "ControlField" Et "ControlValue". Kolòn valè a contient a pwochen acha bon nombre. Note ke générique a "kontwole" konvansyon D' offre pou pwochen kontwòl savann sa yo va sèvi tankou bezwen pou.

Solisyon teknik: Kreye yon sèvis entènèt ki otorize moun vin ladan pa kliyan InfoPath a. Sèvis entènèt la renvoie tounen a pwochen acha bon nombre Et à rapòte ou lajan pou lis la.

Leson Appris:

  • Lè ajoute ke sèvis entènèt sa a tankou yon sous enfòmasyon pou fòm InfoPath, Mwen te twouve li nesesè pou kouvri l' pou yon udc Et boutique li nan bibliyotèk koneksyon done.
  • Mwen tou te twouve li nesesè pou pèmèt cross domèn scripting via administrasyon an sèvis santral // gestion aplikasyon // fòm sèvè configuration.
  • Premye fwa fòm lan te eseye pou jwenn sèvis entènèt la, li pran yon moman Et sou occasion, li ta gen tan pou rekreyasyon. Mwen fiddled ak paramètres nan fòm sèvè configuration pou elaji les paramètres D' Et sa a la pou ede.

Kòd la:

itilize Sistèm;
itilize System.Web;
itilize System.Web.Services;
itilize System.Web.Services.Protocols;
itilize Microsoft.SharePoint;
itilize System.Configuration;

[WebService(Namespace = "http://www.conchango.com/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
piblik klas PoService : System.Web.Services.WebService
{
piblik PoService () {

//Supprimez apwe liy si w ap itilize fèt konpozan
//InitializeComponent();
}

/// <rezime>
/// Jwenn anpil PO pwochen nan a sharepoint po nimewo kontwòl lis.
/// Nimewo enkreman, PO a nan lis sa.
/// </rezime>
/// <cette></cette>
[WebMethod]
piblik filè GetNextPoNumber()
{
filè SpPoControlSiteName; // Non aktyèl bab PANYÒL sit la ki hôtes lis la kontwòl.
filè SpPoControlListName; // Non aktyèl bab PANYÒL lis ki gen Po kontwòl.

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

filè nextPoReqNumber = "xyzzy";

itilize (SPSite kote ki gen = nouvo SPSite(SpPoControlSiteName))
{
itilize (SPWeb Web = direksyon. OpenWeb())
{

Splist.update() currentList = web. Lis[SpPoControlListName];

foreach (SPItem controlItem nan currentList.Items)
{

Si (((filè)controlItem["ControlField"]).Fèt pou l egal("NextPoNumber"))
{
nextPoReqNumber = (filè)controlItem["ControlValue"];

int int_nextPoReqNumber;
int_nextPoReqNumber = Kouvri.ToInt32(nextPoReqNumber);

int_nextPoReqNumber ;

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

} // Lokalize, devwa nan lekti ak à PO anpil nan lis la.


} // w ap itilize entènèt spweb = site.openweb()
} // w ap itilize kote ki gen spsite = spsite nouvo("http://localhost/mizuho")

retounen nextPoReqNumber;

}
}