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();
}
[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