Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Web servisi,Infopath i repeating table

[es] :: .NET :: Web servisi,Infopath i repeating table

[ Pregleda: 1200 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

barisha1

Član broj: 284740
Poruke: 8
178.239.16.*



+1 Profil

icon Web servisi,Infopath i repeating table16.11.2011. u 12:47 - pre 151 meseci
pozdrav
nadam se da sam postavio temu na dobrom mjestu :)
Napravio sam Web servis koji sam vezao za obrazac koji je napravljen u Infopathu 2010. Kada spajam na pojedinačne kontrole(textbox,combobox...) nema nikakvih problema i prilikom submita se sve upiše u bazu. Problem je se pojavio kada sam ubacio Repeating table, upisuje samo prvi redak. To sam mislio rješiti tako što bi radio submit čitavog obrasca. Kod web servisa je slijedeći:

Code:
[WebMethod]
        public void SubmitDocument(XmlDocument doc)
        {
            XmlNamespaceManager nsManager = new XmlNamespaceManager(doc.NameTable);
            nsManager.AddNamespace("my", "http://schemas.microsoft.com/o...2003/myXSD/2011-11-15T07:34:16");
            nsManager.AddNamespace("dfs", "http://schemas.microsoft.com/o...infopath/2003/dataFormSolution");

            XmlNode root = doc.DocumentElement;
            XmlNodeList list = root.SelectNodes("/dfs:IPDocument/my:myFields/my:prodList/my:product", nsManager);

            foreach (XmlNode node in list)
            {
                string Name = node.SelectSingleNode("/dfs:IPDocument/my:myFields/my:prodList/my:product/my:Name", nsManager).InnerText;
                string Price = node.SelectSingleNode("/dfs:IPDocument/my:myFields/my:prodList/my:product/my:Price", nsManager).InnerText;
                string Amount = node.SelectSingleNode("/dfs:IPDocument/my:myFields/my:prodList/my:product/my:Amount", nsManager).InnerText;
                SubmitToDataBase(Name, Price, Amount);
            }
        }

        [WebMethod]
        public void SubmitToDataBase(string Name, string Price, string Amount)
        {
            SqlConnection conn =new SqlConnection("Data Source=SERVER;Initial Catalog=PROBA;Integrated Security=True");
                SqlCommand cmd = new SqlCommand();
                    cmd.Connection = conn;
                    cmd.CommandText =
                      "INSERT INTO PRODUCT " +
                      "(Name, Price, Amount) VALUES (@a, @b, @c)";
                    SqlParameter param = new SqlParameter("@a", Name);
                    cmd.Parameters.Add(param);
                    SqlParameter param1 = new SqlParameter("@b", Price);
                    cmd.Parameters.Add(param1);
                    SqlParameter param2 = new SqlParameter("@c", Amount);
                    cmd.Parameters.Add(param2);
                    conn.Open();
                    cmd.ExecuteNonQuery();
                    conn.Close();
                    
                }


Znači u obrascu imam tri polja: Name, Price i Amount. Upišem prvi redak podatke u ova polja i sve se upiše u bazu(isto što je i radilo i bez servisa SubmitDocument). Kada u Infopathu kliknem Insert new item i tu upišem nove podatke,u bazu mi se upisuju oni podaci iz prvog retka.
Grafički bi to izgledalo ovako(a,b,c,....vrijednosti koje upisujem u obrazac):

Infopath:
a,b,c
d,e,f
g,h,i

Baza:
a,b,c
a,b,c
a,b,c

Može li itko prepoznati o čemu se radi, ja smatram da je problem u web servisu SubmitDocument,al opet nemam ideju šta....hvala unaprijed
 
Odgovor na temu

Mihajlo Cvetanović
Beograd

Član broj: 37636
Poruke: 1249



+96 Profil

icon Re: Web servisi,Infopath i repeating table16.11.2011. u 13:01 - pre 151 meseci
Pričam napamet, ali mislim da je problem u korišćenju XPath-a. Prvo koristiš apsolutnu putanju da selektuješ odgovarajuće nodove, a onda opet koristiš apsolutne putanje da bi izvukao pojedinačne podatke iz svakog noda. Cenim da u foreach petlji treba da stoje relativne XPath putanje.
 
Odgovor na temu

barisha1

Član broj: 284740
Poruke: 8
178.239.16.*



+1 Profil

icon Re: Web servisi,Infopath i repeating table16.11.2011. u 13:06 - pre 151 meseci
zaboravio sam napisati,ovo je link odakle sam prepisao većinu stvari
http://www.codeproject.com/Art...e-InfoPath-form-to-web-service

@Mihajlo
ma evo čitavo jutro i to mjenjam al nema pomaka
 
Odgovor na temu

Mihajlo Cvetanović
Beograd

Član broj: 37636
Poruke: 1249



+96 Profil

icon Re: Web servisi,Infopath i repeating table16.11.2011. u 13:49 - pre 151 meseci
Navedeni članak na CodeProject-u nema ni jednu ocenu. Niko ga do sada nije procenio, ni pogledao ima li grešaka, ali zato jedan od dva komentatora na kraju članka ima isti problem kao i ti. Ne znam za ostatak članka, ali ovde je problem u XPath putanji. Umesto stringa "/dfs:IPDocument/my:myFields/my:prodList/my:product/my:Name" probaj sa stringom "my:Name". Ako to ne uspe probaj sa "./my:Name".
 
Odgovor na temu

barisha1

Član broj: 284740
Poruke: 8
178.239.16.*



+1 Profil

icon Re: Web servisi,Infopath i repeating table17.11.2011. u 07:42 - pre 151 meseci
to je to,sada radi
evo rješenja
Code:

string Name = node.SelectSingleNode("my:Name", nsManager).InnerText;
string Price = node.SelectSingleNode("my:Price", nsManager).InnerText;
string Amount = node.SelectSingleNode("my:Amount", nsManager).InnerText;

Mihajlo,hvala ti puno, ovo je samo proba da shvatim kako sve funkcionira. Sada mi je ideja da napravim kao obrazac za prodaju, u zaglavlju bi bili podaci o kupcu a ispod repeating table sa artiklima. Napravio sam 2 tabele u bazi, konfiguracija i artikli(naravno sve povezano uredno). Na koji način bi mogao da sa jednim submitom sve artikle vežem na podatke o kupcu, ovako bi morao kod svakog artikla birati broj(FK_PODACI o kupcu) da se upiše u bazu??

[Ovu poruku je menjao barisha1 dana 17.11.2011. u 10:27 GMT+1]
 
Odgovor na temu

Mihajlo Cvetanović
Beograd

Član broj: 37636
Poruke: 1249



+96 Profil

icon Re: Web servisi,Infopath i repeating table17.11.2011. u 09:31 - pre 151 meseci
Na mail sam dobio samo "hvala ti puno", a ostatak poruke je dopisan kasnije, pa ga ljudi možda neće ni konstatovati. Ne znam odgovor na pitanje, to moraju drugi dobri ljudi iz C# da ti odgovore.
 
Odgovor na temu

barisha1

Član broj: 284740
Poruke: 8
178.239.16.*



+1 Profil

icon Re: Web servisi,Infopath i repeating table17.11.2011. u 09:33 - pre 151 meseci
ok da znam za ubuduće,sve najbolje :)
 
Odgovor na temu

[es] :: .NET :: Web servisi,Infopath i repeating table

[ Pregleda: 1200 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.