Witam !
moja aplikacja pobiera dane z dwóch źródeł (plik XML i baza danych) i ładuje je wszystkie to jednej tabeli w DataSecie. Kiedy binduje DataTable z DataGridem żeby sprawdzić czy dane załadowały się poprawnie, dane pobrane XML`a są porozrzucane po wierszach.
(jak na razie w pliku XML i w bazie mam po jednym rekordzie)
Domyślam się ,że problem może tkwić w sposobie w jaki ładuję dane z XML`a do tabeli ale nie wiem jak to naprawić. Proszę o wskazówki.
protected void Page_Load(object sender, EventArgs e)
{
//creating connection string
SqlConnection conn = new SqlConnection(@"server = .\sqlexpress; integrated security = true; database = BetterHomes");
try
{
conn.Open();
// creating command and assigning connection and stored procedure
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "DisplayProperties";
//creating data adapter
SqlDataAdapter da = new SqlDataAdapter(cmd);
//creating xml data readers for other real estate agencies
XmlTextReader reader = new XmlTextReader(Server.MapPath("~/OtherAgencies/otherhomes.xml"));
//creating data set
DataSet ds = new DataSet();
//filling ds with properties data and getting datatable
da.Fill(ds, "Properties");
DataTable dt = ds.Tables["Properties"];
//mixing data form the database with data form xml`s
while (reader.Read())
{
string[] homeData = new string[11];
if (reader.NodeType == XmlNodeType.Element)
{
if (reader.Name == "home") { homeData[0] = reader.GetAttribute("homeid"); }
if (reader.Name == "deal_type") { homeData[1] = reader.ReadElementString(); }
if (reader.Name == "measurement") { homeData[2] = reader.ReadElementString(); }
if (reader.Name == "description") { homeData[3] = reader.ReadElementString(); }
if (reader.Name == "city") { homeData[4] = reader.ReadElementString(); }
if (reader.Name == "street") { homeData[5] = reader.ReadElementString(); }
if (reader.Name == "street_nr") { homeData[6] = reader.ReadElementString(); }
if (reader.Name == "picture_ID") { homeData[7] = reader.ReadElementString(); }
if (reader.Name == "agency") { homeData[8] = reader.ReadElementString(); }
if (reader.Name == "price") { homeData[9] = reader.ReadElementString(); }
if (reader.Name == "date_added") { homeData[10] = reader.ReadElementString(); }
}
dt.Rows.Add(homeData);
//sorting data in datatable NIE DZIAŁA !!!!!!
//dt.Select("date_added desc;");
//binding datatable to the repeater
RepeaterDisplayProperties.DataSource = dt;
RepeaterDisplayProperties.DataBind();
GridView1.DataSource = dt;
GridView1.DataBind();
}
}
catch (SqlException ex)
{
ErrorOutput.Text = "Error: " + ex.ToString();
}
finally
{
conn.Close();
}
}
}