xml to gridview then save to database

EDN Admin

Well-known member
Joined
Aug 7, 2010
Messages
12,794
Location
In the Machine
Hi,
I have to work with a very complex XML file, i use XPath to get to the elements i am interested from the file, as you can see in my .cs code, in XMLDataSource.<br/>
I have a gridview populated with the desired data from xml.<br/>
I wish to import my data from gridview to a table in database. Below you can find all my codes (sql,cs,aspx)<br/>
If i execute the SP in SSMS it work fine. <br/>
When i click the Import btn, i get no error message, but the import is not ok, a have new lines in the DB table but they are empty.
Why is there anything in gvr.Cells[2].Text; ?<br/>
<br/>
Is there another way to do this. Any advice is welcome. Thanks.
"Default.cs" <br/>
<br/>
protected void Page_Load(object sender, EventArgs e)<br/>
{<br/>
if (!Page.IsPostBack)<br/>
{<br/>
// GridView_De1_Components.DataBind();<br/>
}<br/>
}<br/>
<br/>
protected void btn_ImportComponent_Click(object sender, EventArgs e)<br/>
{<br/>
// int returnValue = 0;<br/>
<br/>
SqlConnection cnn = new SqlConnection();<br/>
cnn.ConnectionString = ConfigurationManager.ConnectionStrings["ComponentLogin"].ConnectionString;<br/>
SqlCommand cmd = new SqlCommand();<br/>
cmd.Connection = cnn;<br/>
cmd.CommandType = CommandType.StoredProcedure;<br/>
cmd.CommandText = "insert_Components";<br/>
<br/>
foreach (GridViewRow gvr in GridView_De1_Components.Rows)<br/>
{
cmd.Parameters.Clear();<br/>
SqlParameter p = new SqlParameter();
pp.ParameterName = "@ID_sql";<br/>
pp.Value = gvr.Cells[0].Text;<br/>
cmd.Parameters.Add(pp);<br/>
<br/>
pp = new SqlParameter();<br/>
pp.ParameterName = "@ComponentNo_sql";<br/>
pp.Value = gvr.Cells[1].Text; <br/>
cmd.Parameters.Add(pp);<br/>
<br/>
pp = new SqlParameter();<br/>
pp.ParameterName = "@Lenght_sql";<br/>
pp.Value = gvr.Cells[2].Text;<br/>
cmd.Parameters.Add(pp);<br/>
<br/>
pp = new SqlParameter();<br/>
pp.ParameterName = "@ISMultiComponent_sql";<br/>
pp.Value = gvr.Cells[3].Text;<br/>
cmd.Parameters.Add(pp);<br/>
<br/>
//pp = new SqlParameter();<br/>
//pp.ParameterName = "@ModuleID_sql";<br/>
//pp.Value = gvr.Cells[4].Text;<br/>
//cmd.Parameters.Add(pp);<br/>
<br/>
//SqlParameter parameterReturnValue = new SqlParameter("ReturnValue", SqlDbType.Int);<br/>
//parameterReturnValue.Direction = ParameterDirection.ReturnValue;<br/>
//cmd.Parameters.Add(parameterReturnValue);<br/>
<br/>
try<br/>
{<br/>
cnn.Open();<br/>
cmd.ExecuteNonQuery();<br/>
// returnValue = (int)cmd.Parameters["ReturnValue"].Value;<br/>
cnn.Close();<br/>
}<br/>
catch (Exception ex)<br/>
{<br/>
//MessageBox.Show("DataBase connection error saving Components. Please try again!");<br/>
throw ex;<br/>
<br/>
}<br/>
}//foreach<br/>
}<br/>
<br/>
"Default.aspx" <br/>
<br/>
<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master" AutoEventComponentup="true"<br/>
CodeBehind="Default.aspx.cs" Inherits="WebWebApp._Default" %><br/>
<br/>
<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent <br/>
</asp:Content><br/>
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent <br/>
<asp:XmlDataSource ID="sourceDe1" runat="server" DataFile = "De_1.xml" <br/>
XPath = "/ProductDocument/Product/Components/Component </asp:XmlDataSource><br/>
<asp:Button ID="btn_Import" runat="server" Text="ImportComponent" /><br/>
<asp:GridView ID="GridView_De1_Components" runat="server" DataSourceID = "sourceDe1"<br/>
AutoGenerateColumns = "false" Height="141px" Width="712px <br/>
<Columns><br/>
<asp:TemplateField HeaderText = "ID <br/>
<ItemTemplate><br/>
<%# XPath("./@ID")%><br/>
</ItemTemplate><br/>
</asp:TemplateField><br/>
<asp:TemplateField HeaderText = "ComponentNo <br/>
<ItemTemplate><br/>
<%# XPath("./@ComponentNo")%><br/>
</ItemTemplate><br/>
</asp:TemplateField><br/>
<asp:TemplateField HeaderText = "Length <br/>
<ItemTemplate><br/>
<%# XPath("./@Length")%><br/>
</ItemTemplate><br/>
</asp:TemplateField><br/>
<asp:TemplateField HeaderText = "IsMultiComponent <br/>
<ItemTemplate><br/>
<%# XPath("./@IsMultiComponent")%><br/>
</ItemTemplate><br/>
</asp:TemplateField><br/>
<br/>
<asp:TemplateField HeaderText = "Modules <br/>
<ItemTemplate><br/>
<asp:GridView ID="GridView_De1_Components_Modules" AutoGenerateColumns = "false"
<br/>
DataSource = <%# XPathSelect("./ComponentModuleRefs/ComponentModuleRef") %>
<br/>
<br/>
runat="server <br/>
<Columns><br/>
<asp:TemplateField><br/>
<ItemTemplate><br/>
<%# XPath("./@ModuleID")%><br/>
</ItemTemplate><br/>
</asp:TemplateField><br/>
</Columns><br/>
</asp:GridView><br/>
</ItemTemplate><br/>
</asp:TemplateField><br/>
<br/>
</Columns><br/>
</asp:GridView><br/>
<br/>
</asp:Content><br/>
<br/>
<br/>
"Store Procedure: insert_Components" <br/>
<br/>
USE [ProductsDB]<br/>
GO<br/>
SET ANSI_NULLS ON<br/>
GO<br/>
SET QUOTED_IDENTIFIER ON<br/>
GO<br/>
<br/>
CREATE PROCEDURE [dbo].[insert_Components]<br/>
-- Add the parameters for the stored procedure here<br/>
@ID_sql varchar(30),<br/>
@ComponentNo_sql varchar(30),<br/>
@Lenght_sql varchar(30),<br/>
@ISMultiComponent_sql varchar(30)<br/>
--@ModuleID_sql nvarchar(50)<br/>
<br/>
AS<br/>
BEGIN<br/>
SET NOCOUNT ON;<br/>
<br/>
insert into Components<br/>
(ID,ComponentNo,Lenght,ISMultiComponent)<br/>
values (@ID_sql,@ComponentNo_sql,@Lenght_sql,@ISMultiComp onent_sql)<br/>
<br/>
--return scope_identity()<br/>
END<br/>
<br/>
"Script for DB table: Components" <br/>
<br/>
USE [ProductsDB]<br/>
GO<br/>
<br/>
SET ANSI_NULLS ON<br/>
GO<br/>
<br/>
SET QUOTED_IDENTIFIER ON<br/>
GO<br/>
<br/>
SET ANSI_PADDING ON<br/>
GO<br/>
<br/>
CREATE TABLE [dbo].[Components](<br/>
[ID] [varchar](30) NULL,<br/>
[ComponentNo] [varchar](30) NULL,<br/>
[Lenght] [varchar](30) NULL,<br/>
[ISMultiComponent] [varchar](30) NULL<br/>
) ON [PRIMARY]<br/>
<br/>
GO<br/>
<br/>
SET ANSI_PADDING OFF<br/>
GO


View the full article
 
Back
Top