Thanks Arsalan for the tip ! I didn't know the Merge actually works on primary key. I will try this way and let you know how it went. Regards, Nacho
On Feb 23, 6:54 am, Arsalan Tamiz <[email protected]> wrote: > The 'Merge()' method actually works on Primary Key. It seems that either > your Tables do NOT contain the Primary Key or 'dt_aux' gets new Primary > Key(s) each time. OK there is another workaround for this, > > 1) first clear the 'dt' [dt.Clear()] > 2) then call the merge() method [dt.Merge(dt_aux)] > > OR you can add a Primary Key in the tables if this is possible. In this way > you don't have to clear the 'dt'. > > Notice that my main objective is: "don't create new instances and don't > change the DataGridView's DataSource property" > > Regards, > Arsalan Tamiz > > On Mon, Feb 23, 2009 at 4:54 AM, Nacho108 <[email protected]> wrote: > > > Thanks Arsalan for this advice. I've tried this and the merge method > > add the dt_aux's rows to the dt's rows, so after the merge I have > > twice the quantity of rows I had before in it. > > By the way, I'm using the backgroundworker to read the database. > > > Any other ideas? > > > On Feb 22, 1:28 pm, sallushan <[email protected]> wrote: > > > @Vinicius > > > > OP is talking about Windows Forms (Desktop Application) NOT Web > > > Application. > > > > On Feb 21, 10:53 pm, Vinicius Quaiato <[email protected]> > > > wrote: > > > > > Are you using .NET AJAX? > > > > > On Sat, Feb 21, 2009 at 12:06 PM, Nacho108 <[email protected]> > > wrote: > > > > > > Thanks Alarsan for the explanation, but I'm taking a little bit > > > > > different approach here. As for my little experience, ANYTHING > > > > > connected with windows controls shouldn't be modified from another > > > > > thread than the main. It throws exceptions that are very difficult to > > > > > debug. > > > > > That's why I read the data from the database, I put it in an > > auxiliary > > > > > datatable and then I COPY this to the real DT. Also, I don't make a > > > > > NEW datatable each time I read the database. I'm doing this: > > > > > > 1) Read the data from SQL and put it in a auxiliary datatable > > > > > (dt_aux). > > > > > 2) I process dt_aux and afterwards place it into dt with this line: > > > > > dt=filtra_activas(dt_aux.Copy()); (filtra_activa is a > > > > > procedure which make some process with the dt_aux's rows) > > > > > 3) dataGridView1.datasource=dt; (Assign the dt to the dataGridView > > > > > every time, since otherwise it > > > > > doesn't notice if the dt have changed) > > > > > > Is there something else I'm doing wrong? > > > > > > On Feb 20, 5:37 pm, Vinicius Quaiato <[email protected]> > > > > > wrote: > > > > > > Well... The UI need to be refreshed... i'm not seeing how to do it. > > > > > > > You may to do something in ajax to update just the rows in the grid > > that > > > > > > have the data content changed... is it possible for you? > > > > > > > 2009/2/20 Nacho108 <[email protected]> > > > > > > > > Hi, thanks for answering. > > > > > > > I have to process the data from the database and place it in a > > > > > > > datatable in order to do it. > > > > > > > In brief I'm doing something like this: > > > > > > > > 1) Read the data from SQL and put it in a datatabel (dt_aux). > > > > > > > 2) Process dt_aux and place it into dt with this line > > > > > > > dt=filtra_activas(dt_aux.Copy()); > > > > > > > 3) Assign the dt to the datagridview every time, since otherwise > > it > > > > > > > doesn't notice wether the dt have changed. > > > > > > > > So I cannot bind directly the datagridview with the SQL. > > > > > > > > Any other idea? (or maybe go further on the explanation on this > > one if > > > > > > > I've got it wrong) > > > > > > > > On Feb 20, 4:31 pm, Vinicius Quaiato <[email protected] > > > > > > > > wrote: > > > > > > > > Hi, > > > > > > > > > Try to bind a SqlDataSource in the Grid, then just call the > > > > > DataBind() > > > > > > > > method instead of set the DataSource; > > > > > > > > > 2009/2/20 Nacho108 <[email protected]> > > > > > > > > > > Hi Everyone ! > > > > > > > > > > I'm having a problem with a Datagridview control, I hope > > somebody > > > > > can > > > > > > > > > help me since I tried many things but I cannot nail the > > solution. > > > > > > > > > I have a Datagridview displaying the contents of a database > > that > > > > > > > > > change continuously, but the changes are minimum (around 2 or > > 3 > > > > > rows > > > > > > > > > change over 180, every 10 seconds), and I'm reading this > > database > > > > > > > > > through a separated thread and then refreshing the > > datagridview > > > > > each > > > > > > > > > 10 seconds. All the threading thing is already debugged and > > working > > > > > > > > > fine. The problem is not connected with it. > > > > > > > > > The user should be able to scroll the datagridview normally > > during > > > > > the > > > > > > > > > refresh process, but it happens that when the program comes > > to this > > > > > > > > > line where I update the datagridview itself (after reading > > the > > > > > > > > > database): > > > > > > > > > > dataGridView1.DataSource = dt; (dt is a datatable which I > > > > > populate > > > > > > > > > with database values) > > > > > > > > > > If I were scrolling with the mouse, the mouse looses control > > and I > > > > > > > > > have to take again the scroll bar, this is very anoying for > > the > > > > > user > > > > > > > > > since refresh is very often. > > > > > > > > > > I don't know if I'm doing things right, so I have a few > > questions: > > > > > > > > > > 1) If I don't assign the datasource in each database reading, > > the > > > > > > > > > control doesn't refresh its content. Is this normal? The > > > > > datagridview > > > > > > > > > content shouldn't automatically follow the content of dt > > > > > (datatable)? > > > > > > > > > > 2) In case this assign I describe before is necessary, is > > there a > > > > > way > > > > > > > > > to avoiding this loose of control I'm experimenting? > > > > > > > > > > Thanks in advance > > > > > > > > > Nacho
