ok i finally gt time after da exmas to read up on virtual Mode in
grid....

According to my understanding with virtual mode we retrieve the data
when it becomes visible in the grid. This becomes a problem becos i do
some calculation in the grid view. see below, (i'm sory i should hav
given these details before....)

the tables structure.

create table table1{
          id1 int identity(1,1)
          Constraint pk_table1 Primary Key,
          title varchar(20) not null,
          unitvalue float not null
}

create table table2{
          id2 int identity(1,1)
          Constraint pk_table1 Primary Key,
          title varchar(20) not null,
}

create table table3{
          id1 int not null
          Constraint fk_table3_1 Foreign Key References
table1(id1),
          id2 int not null
          Constraint fk_table3_2 Foreign Key References
table2(id2),
          value int default 0,
          Constraint pk_table3 Primary Key (id1,id2),
}

Data for the tables

table1
ID1       Title                Unit value
T1D1    Table1 Data 1      10
T1D2    Table1 Data 2      20

table2
ID2       Title
T2D1    Table2 Data 1
T2D2    Table2 Data 2

table3
ID1      ID2    value
T1D1   T2D1    1
T1D1   T2D2    3
T1D2   T2D1    4
T1D2   T2D2    2

the data will be shown in the grid as below

            T2D1        T2D2       Total
T1D1       1              3            40 (1+3)*10
T1D2       4              2           120 (4+2)*20
               5 (4+1)     6 (3+2)   160 (40+120)

So i can't use virtual mode becos i need to have all the data in the
grid view to calculate the totals

So think i hav to loop through table3 and add the details into the
grid (when loading) and use the CellEndEdit implementation below to
add or update the records on table3. And use a Data adapter to push
back the data to the server when the user saves the data.

Any other suggestions??????

Thanks in advance.






On Oct 14, 10:20 am, "I~N~S~I" <[EMAIL PROTECTED]> wrote:
> I haven't used Virtual Mode before (to be honest, this is the 1st time
> i heard of it). i'm now reading MSDN....
>
> Wil let you know how it goes...
>
> Thanks.
>
> On Oct 14, 4:59 am, "[EMAIL PROTECTED]"
>
> <[EMAIL PROTECTED]> wrote:
> > I second that
>
> > [EMAIL PROTECTED]
>
> > On Oct 13, 7:36 pm, sallushan <[EMAIL PROTECTED]> wrote:
>
> > > I think the best option is then the DataGridView's Virtual Mode.
>
> > > On Oct 13, 3:01 pm, "I~N~S~I" <[EMAIL PROTECTED]> wrote:
>
> > > > I understand the logic you gave to add the edited data to table3 is
> > > > clear, but the problem is how can i load existing data in table3 to my
> > > > grid view.
>
> > > > The method i can think of is looping through the rows in table3 and
> > > > put the data into the data grid view. (this method is very slow)
>
> > > > Yes i agree, the Data binding option is not very user friendly.
> > > > Especially when there is about 100 records in each table. users gonna
> > > > have a hard time finding the value he needs.
>
> > > > Is there a method i can use to bind the data in table3 to the Data
> > > > grid view?
>
> > > > Thanks.
>
> > > > On Oct 13, 1:53 pm, sallushan <[EMAIL PROTECTED]> wrote:
>
> > > > > There is another way to do the same thing (using Data Binding only).
> > > > > But then the interface will NOT be that much friendly. For example,
> > > > > you can bind the DataGridView control with Table3. Which will create 3
> > > > > columns then change the first 2 columns to ComboBox Column and bind
> > > > > them with Table1 and Table2 Respectively.
>
> > > > > The way you are doing is correct, since user will be seeing a Cross-
> > > > > Tab View. But this will make your work a little complex. Which I
> > > > > already have discussed in my previous post.
>
> > > > > You will NOT bind your DataGridView control to Table3. Instead you
> > > > > will use DataGridView's CellEndEdit event. You should also make your
> > > > > 1st Column of DataGridView control Read Only (since we don't want to
> > > > > change the Labels). The Logic is simple,
>
> > > > > 1) Whenever a Cell is edited, we know in which column and row the user
> > > > > is
> > > > > 2) So we will get the Row from Table1 (using Column Index) and
> > > > > 3) Will get the Row from Table2 (using Row Index).
> > > > > 4) Then we will check whether the value is already entered in Table3
> > > > > or NOT
> > > > > 5) If Yes then just change the "value" in Table3
> > > > > 6) Else add the row in Table3 with the given "value".
>
> > > > > On Oct 13, 1:14 pm, "I~N~S~I" <[EMAIL PROTECTED]> wrote:
>
> > > > > > Thanks for the input . will try this, but i have another question.
> > > > > > i have to show the ID values of table1 as column captions and ID
> > > > > > values of table2 as the 1st column of the data grid view.
> > > > > > I have already done this by bring data from the server of table1 and
> > > > > > table2 and the looping through the two table and adding columns and
> > > > > > rows to the grid view. like below
>
> > > > > > foreach (DataRow currow in table1.Rows)
> > > > > > {
>
> > > > > > datagridview1.Columns.Add(currow["ID"].ToString(),currow["ID"].ToString());
>
> > > > > > }
>
> > > > > > foreach (DataRow currow in table2.Rows)
> > > > > > {
> > > > > >       datagridview1.Rows.Add(currow["ID"].ToString());
>
> > > > > > }
>
> > > > > > But how can i put the data in table3 in the to the data grid view to
> > > > > > show it in the correct place. i can't just bind the data grid view 
> > > > > > to
> > > > > > the table3, then i lose my column and row data.
>
> > > > > > Is the method i'm using to add the columns and rows correct? Is 
> > > > > > there
> > > > > > a better method to do this?
>
> > > > > > On Oct 13, 9:07 am, sallushan <[EMAIL PROTECTED]> wrote:
>
> > > > > > > I little thing I missed,
>
> > > > > > >     // if this row is NOT entered yet
> > > > > > >     if (rows == null) {
> > > > > > >         r = table3.NewRow();
> > > > > > >         r("id1") = c1value;
> > > > > > >         r("id2") = c2value;
> > > > > > >         table3.Rows.Add(r);   // ************ ADD THIS LINE
> > > > > > > ********************
> > > > > > >     }
> > > > > > >     else {
> > > > > > >         r = rows(0);
> > > > > > >     }
>
> > > > > > > On Oct 13, 9:01 am, "Arsalan Tamiz" <[EMAIL PROTECTED]> wrote:
>
> > > > > > > > Having same interface as you have created, use the 
> > > > > > > > DataGridView's
> > > > > > > > CellEndEdit Event. Whenever any value is given you will be 
> > > > > > > > notified. So the
> > > > > > > > logical can be,
>
> > > > > > > > private void DataGridView1_CellEndEdit(object sender,
> > > > > > > > System.Windows.Forms.DataGridViewCellEventArgs e)
> > > > > > > > {
> > > > > > > >     object c1value = null;
> > > > > > > >     object c2value = null;
>
> > > > > > > >     // we know which column has been edited so this will be the 
> > > > > > > > row
> > > > > > > >     // from Table1 and we know which row has been edited so this
> > > > > > > >     // will be the row from table2
> > > > > > > >     c1value = table1.Rows(e.ColumnIndex - 1)("id1");
> > > > > > > >     c2value = table2.Rows(e.RowIndex)("id1");
>
> > > > > > > >     DataRow[] rows = null;
> > > > > > > >     DataRow r = default(DataRow);
> > > > > > > >     // ok now we are checking whether the value has already 
> > > > > > > > been entered
> > > > > > > >     // in our Table3 or NOT
> > > > > > > >     rows = table3.Select("id1=" + c1value + " AND id2=" + 
> > > > > > > > c2value);
> > > > > > > >     // if this row is NOT entered yet
> > > > > > > >     if (rows == null) {
> > > > > > > >         r = table3.NewRow();
> > > > > > > >         r("id1") = c1value;
> > > > > > > >         r("id2") = c2value;
> > > > > > > >     }
> > > > > > > >     else {
> > > > > > > >         r = rows(0);
> > > > > > > >     }
>
> > > > > > > >     r("value") = DataGridView1(e.ColumnIndex, e.RowIndex).Value;
>
> > > > > > > > }
>
> > > > > > > > So just send the Table3 to the DataAdapter/TableAdapter which 
> > > > > > > > will update
> > > > > > > > the Physical Database
>
> > > > > > > > On Sun, Oct 12, 2008 at 5:57 AM, I~N~S~I <[EMAIL PROTECTED]> 
> > > > > > > > wrote:
>
> > > > > > > > > Hi all,
> > > > > > > > > I have this problem, i need to know is there a way i cn use 
> > > > > > > > > the data
> > > > > > > > > adapter's update method in this scenario.
> > > > > > > > > i have 3 tables as below
>
> > > > > > > > > create table table1{
> > > > > > > > >           id1 int identity(1,1)
> > > > > > > > >           Constraint pk_table1 Primary Key,
> > > > > > > > >           title varchar(20) not null,
> > > > > > > > > }
>
> > > > > > > > > create table table2{
> > > > > > > > >           id2 int identity(1,1)
> > > > > > > > >           Constraint pk_table1 Primary Key,
> > > > > > > > >           title varchar(20) not null,
> > > > > > > > > }
>
> > > > > > > > > create table table3{
> > > > > > > > >           id1 int not null
> > > > > > > > >           Constraint fk_table3_1 Foreign Key References
> > > > > > > > > table1(id1),
> > > > > > > > >           id2 int not null
> > > > > > > > >           Constraint fk_table3_2 Foreign Key References
> > > > > > > > > table2(id2),
> > > > > > > > >           value int default 0,
> > > > > > > > >           Constraint pk_table3 Primary Key (id1,id2),
> > > > > > > > > }
>
> > > > > > > > > In my application i have a Datagrid view, which has all the 
> > > > > > > > > records
> > > > > > > > > of
> > > > > > > > > table1 as the columns of the datagrid view and records of 
> > > > > > > > > table2 as
> > > > > > > > > the rows of the data grid. and i have table 3 to store the 
> > > > > > > > > values i
> > > > > > > > > enter in Datagrid view.
>
> > > > > > > > > I was wondering can i use the data adapter to fetch data of 
> > > > > > > > > table3
> > > > > > > > > using Fill method and use da update method of data adapter to 
> > > > > > > > > add
> > > > > > > > > values to table3.
>
> > > > > > > > > I have no leads on how to start, thats why my 1st have the 
> > > > > > > > > concern
> > > > > > > > > whether i can do it using the Data adapter.
>
> > > > > > > > > The only method i cn think of is loop through each cell im my
> > > > > > > > > datagrid
> > > > > > > > > view and manually run the insert or update SQL commands. But 
> > > > > > > > > that
> > > > > > > > > will
> > > > > > > > > make my application very slow. specially when there is abt 40 
> > > > > > > > > records
> > > > > > > > > in table1 and 100 records in table2... :-(
> > > > > > > > > Can anyone giv me any leads.....
>
> > > > > > > > > P.S: Im using C# and SQL server 2000 / 2005
>
> > > > > > > > > Thank you,
> > > > > > > > > Insira.- Hide quoted text -
>
> > > > > > > > - Show quoted text -- Hide quoted text -
>
> > > > > > - Show quoted text -- Hide quoted text -
>
> > > > - Show quoted text -- Hide quoted text -
>
> > > - Show quoted text -
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"DotNetDevelopment, VB.NET, C# .NET, ADO.NET, ASP.NET, XML, XML Web 
Services,.NET Remoting" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/DotNetDevelopment

You may subscribe to group Feeds using a RSS Feed Reader to stay upto date 
using following url  

<a href="http://feeds.feedburner.com/DotNetDevelopment";> 
http://feeds.feedburner.com/DotNetDevelopment</a>
-~----------~----~----~----~------~----~------~--~---

Reply via email to