Kripos56
asked on
Urgent : problem looping through dataset and merging data in the 2 x loops.
Hi there..
I have some trouble with the "loop logic" in this specific case, and would really appreciate some code-help on this...
The problem here.. is that i need to get only _ONE_ from each productgroup_name and get _ALL_ the linked metadata for each productgroup_name
Here goes :
The challenge now.. is that i'm running this sql-query :
-------------------------- ---------- ----------
sql.Append("SELECT ");
sql.Append(" tbl_productgroup.productgr oup_name, tbl_metakey.metakey_key ");
sql.Append("FROM ");
sql.Append(" tbl_productgroup, tbl_metakey ");
sql.Append("WHERE ");
sql.Append(" tbl_productgroup.catalogty pe_pk = tbl_metakey.catalogtype_pk ");
sql.Append("AND ");
sql.Append(" relorg_pk ");
sql.Append(" = @CompanyRelorgPk ");
The database data will look like this :
<productgroup_name> <metakey_key>
Server CPU
Server Memory
Server Harddisk
Server Network
Printer Paper
Printer Size
Printer Ports
Monitor Size
Monitor DPI
The result i want it this :
string1 = "Server"
string2 = "CPU, Memory, Harddisk, Network"
string1 = "Printer"
string2 = "Paper, Size, Ports"
string1 : "Monitor"
string2 : "Size, DPI"
This is because i'm calling a function like this :
myFunction(string1, string2)
Here is an example on how i try to do this.. :
protected void chooseRelorg_SelectedIndex Changed(ob ject sender, EventArgs e)
{
//hent evt. produktgrupper og metadata registrert på valgt kunde (basert på relorg_pk)
//clear dataset.
iceAH.pgd.productGroups.Cl ear();
SqlCommand cmd = new SqlCommand();
StringBuilder sql = new StringBuilder();
sql.Append("SELECT ");
sql.Append(" tbl_productgroup.productgr oup_name, tbl_metakey.metakey_key ");
sql.Append("FROM ");
sql.Append(" tbl_productgroup, tbl_metakey ");
sql.Append("WHERE ");
sql.Append(" tbl_productgroup.catalogty pe_pk = tbl_metakey.catalogtype_pk ");
sql.Append("AND ");
sql.Append(" relorg_pk ");
sql.Append(" = @CompanyRelorgPk ");
cmd.Parameters.Add("@Compa nyRelorgPk ", SqlDbType.Int).Value = chooseRelorg.SelectedValue ;
cmd.CommandText = sql.ToString();
DataHandler dh = new DataHandler();
cmd.Connection = dh.IceConnection;
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
if (cmd.Connection.State == ConnectionState.Closed)
{
cmd.Connection.Open();
}
da.Fill(ds);
DataTable dt = ds.Tables[0];
gridViewProductGroups.Data Source = ds;
gridViewProductGroups.Data Bind();
//populate the checkboxlist with a costumers existing productgroups and metadata (from dataset).
ArrayList col1 = new ArrayList();
ArrayList col2 = new ArrayList();
foreach (DataRow row1 in dt.Rows)
{
col1.Add(row1["productgrou p_name"]);
string metakey_key = "";
foreach (DataRow row2 in dt.Rows)
{
if (row1["productgroup_name"] == row2["productgroup_name"])
{
metakey_key += row1["metakey_key"].ToStri ng() + ",";
}
}
iceAH.addProductGroupAndMe taData(row 1["product group_name "].ToStrin g(), metakey_key);
}
cmd.Connection.Close();
sourceChkProd.DataBind();
}
I have some trouble with the "loop logic" in this specific case, and would really appreciate some code-help on this...
The problem here.. is that i need to get only _ONE_ from each productgroup_name and get _ALL_ the linked metadata for each productgroup_name
Here goes :
The challenge now.. is that i'm running this sql-query :
--------------------------
sql.Append("SELECT ");
sql.Append(" tbl_productgroup.productgr
sql.Append("FROM ");
sql.Append(" tbl_productgroup, tbl_metakey ");
sql.Append("WHERE ");
sql.Append(" tbl_productgroup.catalogty
sql.Append("AND ");
sql.Append(" relorg_pk ");
sql.Append(" = @CompanyRelorgPk ");
The database data will look like this :
<productgroup_name> <metakey_key>
Server CPU
Server Memory
Server Harddisk
Server Network
Printer Paper
Printer Size
Printer Ports
Monitor Size
Monitor DPI
The result i want it this :
string1 = "Server"
string2 = "CPU, Memory, Harddisk, Network"
string1 = "Printer"
string2 = "Paper, Size, Ports"
string1 : "Monitor"
string2 : "Size, DPI"
This is because i'm calling a function like this :
myFunction(string1, string2)
Here is an example on how i try to do this.. :
protected void chooseRelorg_SelectedIndex
{
//hent evt. produktgrupper og metadata registrert på valgt kunde (basert på relorg_pk)
//clear dataset.
iceAH.pgd.productGroups.Cl
SqlCommand cmd = new SqlCommand();
StringBuilder sql = new StringBuilder();
sql.Append("SELECT ");
sql.Append(" tbl_productgroup.productgr
sql.Append("FROM ");
sql.Append(" tbl_productgroup, tbl_metakey ");
sql.Append("WHERE ");
sql.Append(" tbl_productgroup.catalogty
sql.Append("AND ");
sql.Append(" relorg_pk ");
sql.Append(" = @CompanyRelorgPk ");
cmd.Parameters.Add("@Compa
cmd.CommandText = sql.ToString();
DataHandler dh = new DataHandler();
cmd.Connection = dh.IceConnection;
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
if (cmd.Connection.State == ConnectionState.Closed)
{
cmd.Connection.Open();
}
da.Fill(ds);
DataTable dt = ds.Tables[0];
gridViewProductGroups.Data
gridViewProductGroups.Data
//populate the checkboxlist with a costumers existing productgroups and metadata (from dataset).
ArrayList col1 = new ArrayList();
ArrayList col2 = new ArrayList();
foreach (DataRow row1 in dt.Rows)
{
col1.Add(row1["productgrou
string metakey_key = "";
foreach (DataRow row2 in dt.Rows)
{
if (row1["productgroup_name"]
{
metakey_key += row1["metakey_key"].ToStri
}
}
iceAH.addProductGroupAndMe
}
cmd.Connection.Close();
sourceChkProd.DataBind();
}
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Thank you SOO much for.. i'd have to say.. the best answer i've _ever_ had on Experts Exchange !..
It worked like a dream !
Terje.
It worked like a dream !
Terje.
Most Welcome :o)
and after the second line in *else* block, I didn't add it to my code cause it seems there is no use for it.
regards,