473,382 Members | 1,445 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,382 software developers and data experts.

DataGrid Component | Displaying columns of a DataSet as Rows in a DataGrid ?

Hi...
I'm working on a tool for editing text resources for a family of software
product my company produces.

These text resources are found in a SQL Server database, in a table called
"Resource" with the following structure :
Resource{[id],en,fr,es}
Yes.. these are the only languages supported actually.

A couple of rows in that table would look like this :
id | en | fr | es |
0000001 | Open |Ouvrir | Abrir |
0000002 | Close | Fermer | Cerrar |
etc...

I have a DataSet object, that I have filled with a SqlDataAdapter,
therefore, the first table of my Dataset is called "Resource" and has
exactly the same structure than the Table in the database.

I have a ListBox component that uses this DataSet as its DataSource. Its
DataMember property is the "Resource" table and its display member depends
on which is the primary display language that the user has chosen.

So the typical display of this listbox, if the user has chosen 'en' would be
:
Open
Close
.....

Then, when a user selects one of the list items, I use the selected row to
fill a DataGrid component in order to allow the user to edit all language
versions of the resource in a DataGrid.

Now here comes my problem. If I use a filtered version of this DataSet as
the DataSource of my DataGrid (for example a DataViewManager), the grid will
have exactly the same look than the table I have shown above. That doesn't
work for me, cause some resources could be very long error messages,
therefore, I would like to show each column of the table as a row in the
datagrid, something like this (assuming that I have chosen the item 0000001
Language | Value
en | Close
fr | Fermer
es | Cerrar

As for now, I have manually done this transformation by creating a table
called "ResourceItem" in the DataSource bounded to my DataGrid which I fill
by looping on the columns of the selected row. Here's a sample :

foreach(DataColumn col in drSelectedRow.Tables["Resource"].Columns){
DataRow newGridRow = dsGridDataSet.Tables["ResourceItem"].Rows.NewRow();
newGridRow["Language"] = col.ColumnName;
newGridRow["Value"] = drSelectedRow[col].ToString();
dsGridDataSet.Add(newGridRow);
}

I don't like this solution 'cause it's finally not a matter of datastructure
but a matter of display. I just would like to be able to show the columns of
my original DataSet as rows in my DataGrid. Any idea how can I achieve that
?

Thanxs,

Diego

P.S. : I'm aware of the cool ways to manage Globalization in .Net and
resource files, but this is not my question. The purpose of my tool is to
edit resource files for legacy software programmed in VB6 or in ASP 4.0. So
the edition of resources is to be done with this tool I'm working on in C#
but the edited resource files are intended to be used by other older
software.


Nov 15 '05 #1
3 2514
Hi Diego,

I think as your users will be editing the resources row-by-row, you don't
need the DataGrid at all. Instead, add a layout like this:

Label: [Open [V] (kinda drop-down list)

_____________________________
English text: [_____________________________] (consider multi-line edit?)
_____________________________
French text: [_____________________________] (consider multi-line edit?)
_____________________________
Spanish text: [_____________________________] (consider multi-line edit?)

______________
| Save |
--------------
The text boxes will be data-bound to the corresponding columns of the
filtered DataView.

P.S. Hope my ASCII art won't be mangled :-)

--
Dmitriy Lapshin [C# / .NET MVP]
X-Unity Test Studio
http://x-unity.miik.com.ua/teststudio.aspx
Bring the power of unit testing to VS .NET IDE

"Diego TERCERO" <di***********@freesurf.fr> wrote in message
news:3f**********************@news.club-internet.fr...
Hi...
I'm working on a tool for editing text resources for a family of software
product my company produces.

These text resources are found in a SQL Server database, in a table called
"Resource" with the following structure :
Resource{[id],en,fr,es}
Yes.. these are the only languages supported actually.

A couple of rows in that table would look like this :
id | en | fr | es |
0000001 | Open |Ouvrir | Abrir |
0000002 | Close | Fermer | Cerrar |
etc...

I have a DataSet object, that I have filled with a SqlDataAdapter,
therefore, the first table of my Dataset is called "Resource" and has
exactly the same structure than the Table in the database.

I have a ListBox component that uses this DataSet as its DataSource. Its
DataMember property is the "Resource" table and its display member depends
on which is the primary display language that the user has chosen.

So the typical display of this listbox, if the user has chosen 'en' would be :
Open
Close
....

Then, when a user selects one of the list items, I use the selected row to
fill a DataGrid component in order to allow the user to edit all language
versions of the resource in a DataGrid.

Now here comes my problem. If I use a filtered version of this DataSet as
the DataSource of my DataGrid (for example a DataViewManager), the grid will have exactly the same look than the table I have shown above. That doesn't
work for me, cause some resources could be very long error messages,
therefore, I would like to show each column of the table as a row in the
datagrid, something like this (assuming that I have chosen the item 0000001 Language | Value
en | Close
fr | Fermer
es | Cerrar

As for now, I have manually done this transformation by creating a table
called "ResourceItem" in the DataSource bounded to my DataGrid which I fill by looping on the columns of the selected row. Here's a sample :

foreach(DataColumn col in drSelectedRow.Tables["Resource"].Columns){
DataRow newGridRow = dsGridDataSet.Tables["ResourceItem"].Rows.NewRow(); newGridRow["Language"] = col.ColumnName;
newGridRow["Value"] = drSelectedRow[col].ToString();
dsGridDataSet.Add(newGridRow);
}

I don't like this solution 'cause it's finally not a matter of datastructure but a matter of display. I just would like to be able to show the columns of my original DataSet as rows in my DataGrid. Any idea how can I achieve that ?

Thanxs,

Diego

P.S. : I'm aware of the cool ways to manage Globalization in .Net and
resource files, but this is not my question. The purpose of my tool is to
edit resource files for legacy software programmed in VB6 or in ASP 4.0. So the edition of resources is to be done with this tool I'm working on in C#
but the edited resource files are intended to be used by other older
software.



Nov 15 '05 #2
Hi Dimitry,
I have thought about this solution.
The problem is that I wanted to use a DataGrid because the number of
available languages is not fixed : it is supposed to be known dynamically.
That means, that my DataGrid is bounded to a DataSet that has a structure
that I don't know at design time, only at runtime (I give users the
possibility to open a specific Resource table, whose structure I don't know
yet).

So a solution would be to dynamically create labels and textboxes and bound
them to the Resources dataset after having guessed which structure this
DataSet has (remember that sometimes there might be more than French,
English or Spanish... resources).

I think that doing this results in code complication, performance overhead,
and amounts the risk of generating exceptions, this is tipically the kind of
situation for which the DataGrid is pretty wel suited.

Now... my only problem is that I need to adapt its look to my issue :
display rows as columns.
I know this is possible because I've found in Google a resource that
speciffically adresses this issue, but the link is dead !

Thanxs for your help.

Diego

"Dmitriy Lapshin [C# / .NET MVP]" <x-****@no-spam-please.hotpop.com> a ecrit
dans le message de news:%2****************@TK2MSFTNGP10.phx.gbl...
Hi Diego,

I think as your users will be editing the resources row-by-row, you don't
need the DataGrid at all. Instead, add a layout like this:

Label: [Open [V] (kinda drop-down list)

_____________________________
English text: [_____________________________] (consider multi-line edit?)
_____________________________
French text: [_____________________________] (consider multi-line edit?)
_____________________________
Spanish text: [_____________________________] (consider multi-line edit?)

______________
| Save |
--------------
The text boxes will be data-bound to the corresponding columns of the
filtered DataView.

P.S. Hope my ASCII art won't be mangled :-)

--
Dmitriy Lapshin [C# / .NET MVP]
X-Unity Test Studio
http://x-unity.miik.com.ua/teststudio.aspx
Bring the power of unit testing to VS .NET IDE

"Diego TERCERO" <di***********@freesurf.fr> wrote in message
news:3f**********************@news.club-internet.fr...
Hi...
I'm working on a tool for editing text resources for a family of software product my company produces.

These text resources are found in a SQL Server database, in a table called "Resource" with the following structure :
Resource{[id],en,fr,es}
Yes.. these are the only languages supported actually.

A couple of rows in that table would look like this :
id | en | fr | es |
0000001 | Open |Ouvrir | Abrir |
0000002 | Close | Fermer | Cerrar |
etc...

I have a DataSet object, that I have filled with a SqlDataAdapter,
therefore, the first table of my Dataset is called "Resource" and has
exactly the same structure than the Table in the database.

I have a ListBox component that uses this DataSet as its DataSource. Its
DataMember property is the "Resource" table and its display member depends on which is the primary display language that the user has chosen.

So the typical display of this listbox, if the user has chosen 'en' would
be
:
Open
Close
....

Then, when a user selects one of the list items, I use the selected row
to fill a DataGrid component in order to allow the user to edit all language versions of the resource in a DataGrid.

Now here comes my problem. If I use a filtered version of this DataSet as the DataSource of my DataGrid (for example a DataViewManager), the grid

will
have exactly the same look than the table I have shown above. That doesn't work for me, cause some resources could be very long error messages,
therefore, I would like to show each column of the table as a row in the
datagrid, something like this (assuming that I have chosen the item

0000001
Language | Value
en | Close
fr | Fermer
es | Cerrar

As for now, I have manually done this transformation by creating a table
called "ResourceItem" in the DataSource bounded to my DataGrid which I

fill
by looping on the columns of the selected row. Here's a sample :

foreach(DataColumn col in drSelectedRow.Tables["Resource"].Columns){
DataRow newGridRow =

dsGridDataSet.Tables["ResourceItem"].Rows.NewRow();
newGridRow["Language"] = col.ColumnName;
newGridRow["Value"] = drSelectedRow[col].ToString();
dsGridDataSet.Add(newGridRow);
}

I don't like this solution 'cause it's finally not a matter of

datastructure
but a matter of display. I just would like to be able to show the columns of
my original DataSet as rows in my DataGrid. Any idea how can I achieve

that
?

Thanxs,

Diego

P.S. : I'm aware of the cool ways to manage Globalization in .Net and
resource files, but this is not my question. The purpose of my tool is

to edit resource files for legacy software programmed in VB6 or in ASP 4.0.

So
the edition of resources is to be done with this tool I'm working on in C# but the edited resource files are intended to be used by other older
software.


Nov 15 '05 #3
Standard Windows Forms datagrid cannot display data with rows and columns
swapped. You should probably consider a 3rd party component, or indeed
transpose the data programatically - I think it's pretty viable solution for
your application.

I know I will be flamed for this, but, after all, the users of your
application don't care how perfect it's design is - what they care about is
how convenient and reliable it is.

--
Dmitriy Lapshin [C# / .NET MVP]
X-Unity Test Studio
http://x-unity.miik.com.ua/teststudio.aspx
Bring the power of unit testing to VS .NET IDE

"Le Big Mac" <le******@somedomain.com> wrote in message
news:3f**********************@news.free.fr...
Hi Dimitry,
I have thought about this solution.
The problem is that I wanted to use a DataGrid because the number of
available languages is not fixed : it is supposed to be known dynamically.
That means, that my DataGrid is bounded to a DataSet that has a structure
that I don't know at design time, only at runtime (I give users the
possibility to open a specific Resource table, whose structure I don't know yet).

So a solution would be to dynamically create labels and textboxes and bound them to the Resources dataset after having guessed which structure this
DataSet has (remember that sometimes there might be more than French,
English or Spanish... resources).

I think that doing this results in code complication, performance overhead, and amounts the risk of generating exceptions, this is tipically the kind of situation for which the DataGrid is pretty wel suited.

Now... my only problem is that I need to adapt its look to my issue :
display rows as columns.
I know this is possible because I've found in Google a resource that
speciffically adresses this issue, but the link is dead !

Thanxs for your help.

Diego

"Dmitriy Lapshin [C# / .NET MVP]" <x-****@no-spam-please.hotpop.com> a ecrit dans le message de news:%2****************@TK2MSFTNGP10.phx.gbl...
Hi Diego,

I think as your users will be editing the resources row-by-row, you don't
need the DataGrid at all. Instead, add a layout like this:

Label: [Open [V] (kinda drop-down list)

_____________________________
English text: [_____________________________] (consider multi-line edit?) _____________________________
French text: [_____________________________] (consider multi-line edit?) _____________________________
Spanish text: [_____________________________] (consider multi-line edit?)
______________
| Save |
--------------
The text boxes will be data-bound to the corresponding columns of the
filtered DataView.

P.S. Hope my ASCII art won't be mangled :-)

--
Dmitriy Lapshin [C# / .NET MVP]
X-Unity Test Studio
http://x-unity.miik.com.ua/teststudio.aspx
Bring the power of unit testing to VS .NET IDE

"Diego TERCERO" <di***********@freesurf.fr> wrote in message
news:3f**********************@news.club-internet.fr...
Hi...
I'm working on a tool for editing text resources for a family of software product my company produces.

These text resources are found in a SQL Server database, in a table called "Resource" with the following structure :
Resource{[id],en,fr,es}
Yes.. these are the only languages supported actually.

A couple of rows in that table would look like this :
id | en | fr | es |
0000001 | Open |Ouvrir | Abrir |
0000002 | Close | Fermer | Cerrar |
etc...

I have a DataSet object, that I have filled with a SqlDataAdapter,
therefore, the first table of my Dataset is called "Resource" and has
exactly the same structure than the Table in the database.

I have a ListBox component that uses this DataSet as its DataSource. Its DataMember property is the "Resource" table and its display member depends on which is the primary display language that the user has chosen.

So the typical display of this listbox, if the user has chosen 'en' would
be
:
Open
Close
....

Then, when a user selects one of the list items, I use the selected row
to fill a DataGrid component in order to allow the user to edit all language versions of the resource in a DataGrid.

Now here comes my problem. If I use a filtered version of this DataSet as the DataSource of my DataGrid (for example a DataViewManager), the
grid will
have exactly the same look than the table I have shown above. That doesn't work for me, cause some resources could be very long error messages,
therefore, I would like to show each column of the table as a row in
the datagrid, something like this (assuming that I have chosen the item 0000001
Language | Value
en | Close
fr | Fermer
es | Cerrar

As for now, I have manually done this transformation by creating a table called "ResourceItem" in the DataSource bounded to my DataGrid which I

fill
by looping on the columns of the selected row. Here's a sample :

foreach(DataColumn col in drSelectedRow.Tables["Resource"].Columns){
DataRow newGridRow =

dsGridDataSet.Tables["ResourceItem"].Rows.NewRow();
newGridRow["Language"] = col.ColumnName;
newGridRow["Value"] = drSelectedRow[col].ToString();
dsGridDataSet.Add(newGridRow);
}

I don't like this solution 'cause it's finally not a matter of

datastructure
but a matter of display. I just would like to be able to show the

columns
of
my original DataSet as rows in my DataGrid. Any idea how can I achieve

that
?

Thanxs,

Diego

P.S. : I'm aware of the cool ways to manage Globalization in .Net and
resource files, but this is not my question. The purpose of my tool is

to edit resource files for legacy software programmed in VB6 or in ASP
4.0. So
the edition of resources is to be done with this tool I'm working on

in C# but the edited resource files are intended to be used by other older
software.




Nov 15 '05 #4

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

1
by: Juan | last post by:
I built a form that displays a master-detail relation ship, now i need to add a column to the datagrid displaying the master data, this column corresponds to the text name of a column stored in the...
2
by: Josef Meile | last post by:
Hi, I'm using a ComboBox, some Textboxes, and a DataGrid to represent a many-to-many relationship between Person and Course. Each time that I change the value in the ComboBox (which for now is...
3
by: Jim Heavey | last post by:
Trying to figure out the technique which should be used to add rows to a datagrid. I am thinking that I would want an "Add" button on the footer, but I am not quite sure how to do that. Is that...
2
by: CSL | last post by:
I am using the DataGrid in a Windows Application, how can I adjust the widths of each column individually.
7
by: Juan Romero | last post by:
Hey guys, please HELP I am going nuts with the datagrid control. I cannot get the damn control to refresh. I am using soap to get information from a web service. I have an XML writer output...
5
by: Genojoe | last post by:
I am using code from Help with two exceptions. (1) I increased the number of sample rows from 3 to 20, and (2) I anchored the datagrid to bottom of form so that I can change the size of the grid by...
6
by: Ron L | last post by:
I have a dataset whose source is a SQL 2k stored procedure that I am trying to display in a datagrid. This datasource has 4 columns that I am interested in here, a text column and 3 value columns...
0
by: | last post by:
I have a question about spawning and displaying subordinate list controls within a list control. I'm also interested in feedback about the design of my search application. Lots of code is at the...
8
by: Brock | last post by:
I am trying to populate a Crystal Report from data in my DataGrid. The reason for this is that I want the user to be able to change values without updating the database, but still have their report...
0
by: Faith0G | last post by:
I am starting a new it consulting business and it's been a while since I setup a new website. Is wordpress still the best web based software for hosting a 5 page website? The webpages will be...
0
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 3 Apr 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome former...
0
by: taylorcarr | last post by:
A Canon printer is a smart device known for being advanced, efficient, and reliable. It is designed for home, office, and hybrid workspace use and can also be used for a variety of purposes. However,...
0
by: Charles Arthur | last post by:
How do i turn on java script on a villaon, callus and itel keypad mobile phone
0
by: aa123db | last post by:
Variable and constants Use var or let for variables and const fror constants. Var foo ='bar'; Let foo ='bar';const baz ='bar'; Functions function $name$ ($parameters$) { } ...
0
by: ryjfgjl | last post by:
In our work, we often receive Excel tables with data in the same format. If we want to analyze these data, it can be difficult to analyze them because the data is spread across multiple Excel files...
1
by: nemocccc | last post by:
hello, everyone, I want to develop a software for my android phone for daily needs, any suggestions?
1
by: Sonnysonu | last post by:
This is the data of csv file 1 2 3 1 2 3 1 2 3 1 2 3 2 3 2 3 3 the lengths should be different i have to store the data by column-wise with in the specific length. suppose the i have to...
0
by: Hystou | last post by:
There are some requirements for setting up RAID: 1. The motherboard and BIOS support RAID configuration. 2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.