Avatar billede oksana Nybegynder
22. april 2005 - 12:31 Der er 3 kommentarer og
1 løsning

Problemer med complex databinding fra en datagrid til den anden

Hej !

Jeg har to datagrid , som jeg gerne vil binde sammen.
En datagrid med Orders og den anden- med OrderLines.
Hvis man vælger en konkret order i tabelen Orders , så skal der vises OrderLines for den givne order.
Problemet er at jeg kan vise orderlines for den første order, men når jeg vælger den anden order, vises der stadivæk orderLines for den første order.

Her er min kode for at vise ordrene:

private DataSet dscust = new DataSet();
private DataSet dsItem = new DataSet()
private DataSet dsOrder = new DataSet();
private DataSet dsOrderline = new DataSet();
private DataRow dr;
private DataTable dtcust;
private DataTable dtOrder;
private DataTable dtItem;
private DataTable dtOrderline;

private void loadOrders()
{
try
{
//bws er en web service
dsOrder = bws.GetDataSet("SELECT * FROM Orders");
dtOrder = dsOrder.Tables["Table"];
OrderdataGrid.DataSource = dtOrder;

if(OrderdataGrid.CurrentRowIndex!=-1)
{
int i = OrderdataGrid.CurrentRowIndex;
DataRow currentOrder= dsOrder.Tables["Table"].Rows[i];

int orderId= Convert.ToInt32currentOrder.ItemArray.GetValue(i));
     
dsOrderline = bws.GetDataSet("SELECT * FROM Orderline where orderId=" + orderId);
dtOrderline=dsOrderline.Tables["Table"];
dataGridOrderLines.DataSource = dtOrderline;
}               
}
catch(Exception ex){
MessageBox.Show("An error occurred : "+ ex.Message,"Error",MessageBoxButtons.OK,MessageBoxIcon.Error);
}
}

Er der nogen der kan hjælpe mig med det ????

Mvh
Oksana
Avatar billede oksana Nybegynder
22. april 2005 - 12:47 #1
Undskyld, der er en stævefejl:

int orderId= Convert.ToInt32(currentOrder.ItemArray.GetValue(i));
Avatar billede larry_hansen Nybegynder
22. april 2005 - 18:17 #2
Hej Oksana,

Jeg har ikke lige præcis den løsning du der søger met et alternativ..
Og måske kan du selv ud fra alternativet udlede den rigtige løsning.

Du kan eks, i dit kald til bws webservicen selecte begge tabeller på een gang
og relatere dem således..

// dsSelectStatement er en metode der returnere et dataset..
DataSet dsBoth = new DataSet();
dsBoth = dsSelectStatement("Select * from Orders; select * from OrderLines");
dsBoth.Relations.Add("OrderLines", dsBoth.Tables[0].Columns["OrderID"],dsBoth.Tables[1].Columns["OrderID"]);
OrderdataGrid.DataSource = dsBoth.Tables[0];

På denne måde vises begge tabeller i et grid, Hvor Orders vises som primær tabel og med et lille "+" ud for hver post i tabellen som man så kan trykke på for at få vist den enkelte post´s OrderLines..

Håber du kan bruge det til noget!

Mvh.
Larry
Avatar billede oksana Nybegynder
22. april 2005 - 21:54 #3
Hej Larry,
tak for alternativ ;-) det er ikke helt rigtig det, jeg prøver at lave ;-)
Men jeg skal desverræ vise det i to grid ved siden af hinanden(ifølge kunden)
Jeg har fundet fejlen... den lille onsvare fejl ;-)
int orderId= Convert.ToInt32(currentOrder.ItemArray.GetValue(0)); istedet for getValue(i)
Men tak for hjælpen anyway

Mvh
Oksana
Avatar billede oksana Nybegynder
22. april 2005 - 21:55 #4
Jeg lukker den spørgsmål hermed, tak
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester