[英]how can i store values to a href link multiple values in asp.net c#
[英]Can I use variable to fill xml with multiple values in ASP.Net c#?
大家好,我正在嘗試使用SQL Server數據庫中的值創建和保存XML。
我的代碼基本上創建了一個XML字符串,其中填充了我從多個SQL查詢中獲得的變量(我需要從許多表中獲取數據以完成XML)
我正在使用SqlDataReader
來獲取變量的值。
由於我的XML很長而且很復雜,因此我決定根據查詢從幾個子字符串中放入最終的XML字符串,基本上像這樣:
finalxml string = startxml + headerxml + buyerxml + sellerxml + linesxml + summaryxml
直到到達某個點,SQL查詢返回的結果不止一行,我還是一切都好。
這是我的代碼背后:
string orderdetails = "select ProductId, Quantity from [Order] inner join OrderItem on [Order].Id=OrderItem.OrderId where OrderId='" + orderID + "'";
SqlCommand com3 = new SqlCommand(orderdetails, dbConn);
dbConn.Open();
using (SqlDataReader orderitem = com3.ExecuteReader())
while (orderitem.Read())
{
string orderxml = "<Order>" + "<OrderItem>" + orderitem.GetInt32(0).ToString() + "</OrderItem>" + "<OrderItem>" + orderitem.GetInt32(1).ToString() + "</OrderItem>" + "</Order>";
Label20.Text = orderxml;
string termid = orderitem.GetInt32(0).ToString();
string termmenny = orderitem.GetInt32(1).ToString();
}
dbConn.Close();
}
protected void Button1_Click(object sender, EventArgs e)
{
string headerxml = "<Order-Header>" +
"<DocumentType> számla </DocumentType>" +
"<OrderNumber>" + rendSz + "</OrderNumber>" +
"<OrderDate>"+ datum +"</OrderDate>" +
"<ExpectedDeliverydate> " + szallido + "</ExpectedDeliverydate>"+
"<PaymentMethod>"+ fizmod +"</PaymentMethod>"+
"<Remarks><![CDATA[" + txtFirstName.Text + "]]></Remarks>"+
"<Note><![CDATA[" + txtLastName + "]]></Note>" +
"<PreviousOrderNumber><![CDATA[]]></PreviousOrderNumber>" +
"</Order-Header>";
string vevoxml = "<Buyer>" +
"<ILN>435</ILN>" +
"<Name>"+ vezeteknev +" "+ keresztnev +"</Name>" +
"<City>" + vevovaros + "</City>" +
"<ZIP>" + irszam + "</ZIP>" +
"<Address>" + vevocim1 + vevocim2 + "</Address>" +
"<E-mail>" + vevoemail + "</E-mail>" +
"<Telefon>" + vevotel + "</Telefon>" +
"<Contact>" + "nincs" + "</Contact>" +
"<DeliveryName>" + szallkeresztnev +" "+ szallvezeteknev + "</DeliveryName>" +
"<DeliveryCity>" + szallcimvaros + "</DeliveryCity>" +
"<DeliveryZIP>" + szallcimirszam + "</DeliveryZIP>" +
"<DeliveryAddress>" + szallvevocim1 + szallvevocim2 + "</DeliveryAddress>" +
"</Buyer>";
string eladoxml = "<Seller>" +
"<ILN />" +
"<Name>E-Szoftver Kft.</Name>" +
"<City>Budapest</City>" +
"<ZIP>1195</ZIP>" +
"<Address>Ady Endre út 97-99. F/04.</Address>" +
"<E-mail>laszlo@marsalsoft.hu</E-mail>" +
"</Seller>";
string linexml = "<Line>" +
"<Line-Item>" +
"<LineNumber>1</LineNumber>" +
"<EAN />" +
"<SupplierItemCode />" +
"<CustomsCode>5829</CustomsCode>" +
"<ItemDescription><![CDATA[E-Számla szoftver frissítési és jogkövetési díj 1 évre]]></ItemDescription>" +
"<ItemNote><![CDATA[]]></ItemNote>" +
"<VATType>27</VATType>" +
"<PackageType>CU</PackageType>" +
"<OrderedQuantity>1</OrderedQuantity>" +
"<UnitOfMeasure>év</UnitOfMeasure>" +
"<OrderedUnitNetPrice>13200</OrderedUnitNetPrice>" +
"</Line-Item>" +
"</Line>";
string strMyXml = "<?xml version=\"1.0\" encoding=\"windows-1250\"?> " +
"<Document-Order>"+
headerxml +
"<Order-Parties>" +
vevoxml +
eladoxml +
"</Order-Parties>"+
"<Order-Lines>" +
linexml +
"</Order-Lines>" +
"<Order-Summary>" +
"<TotalLines>1</TotalLines>" +
"<TotalOrderedAmount>1</TotalOrderedAmount>" +
"<TotalNetPrice>13200</TotalNetPrice>" +
"<TotalVat>3564</TotalVat>" +
"<TotalGross>16764</TotalGross>" +
"</Order-Summary>" +
"</Document-Order>";
XmlDocument xDoc = new XmlDocument();
xDoc.LoadXml(strMyXml);
xDoc.Save(Server.MapPath("//orders//szamla.xml"));
}
現在, lineXML
部分是我的問題,它描述了訂單中包含的產品。 每個xml描述1個訂單,但是1個訂單可以包含3個產品,在這種情況下,我需要為每個產品創建一行,其中包含以下幾個元素:數量,數量,凈價,總價。
是否可以將SqlDataReader
和變量添加到字符串中,還是我需要使用其他方式,例如從查詢結果生成的數據集?
我發現了很多有關從數據集生成xml以及使用字符串生成xml的信息,但是它們都不包含有關這種特殊情況的信息,即從需要使用多個查詢的SQL Server生成XML。
幸運的是,我的代碼是模塊化的,因此,如果只能使用數據集完成代碼,則無需希望接觸XML的其他部分。 任何幫助,將不勝感激。
同時,我找到了解決方案,對於xml的orderdetails部分,我使用了數據集,而不是將其寫入文件,而是將其轉換為字符串,並將其添加到主要的xmlstring中:
string orderdetails = "select Rank() OVER (Order by ProductID) as LineNumber, null as EAN, null as CustomsCode, ProductId as SupplierItemCode, '![CDATA['+Product.Name+']' as ItemDescription, '![CDATA['+Product.ShortDescription+']' as ItemNote, null as VATType, 'CU' as PackageType, Quantity as OrderQuantity, 'darab' as UnitOfMeasure, UnitPriceExclTax as OrderedUnitNetPrice from [Order] inner join OrderItem on [Order].Id=OrderItem.OrderId Inner join Product on OrderItem.ProductId=Product.Id where OrderId='" + orderID + "'";
SqlCommand com3 = new SqlCommand(orderdetails, dbConn);
dbConn.Open();
SqlDataAdapter adapter;
DataSet ds = new DataSet("Line");
try
{
adapter = new SqlDataAdapter(orderdetails, dbConn);
adapter.Fill(ds, "Line-Item");
dbConn.Close();
StringWriter sw = new StringWriter();
string result = sw.ToString();
ds.WriteXml(sw);
ds.WriteXml(@"E:\mypath\Product.xml"); //saved to file as well just to check the correct scheme
teststring = sw.ToString();
prodlabel.Text = teststring;
}
catch (Exception ex)
{
Label20.Text = ex.ToString();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.