Forum Moderators: open

Message Too Old, No Replies

DataGrid and Column Position using VB.net

         

aax123

9:06 pm on Nov 14, 2005 (gmt 0)

10+ Year Member



Does anyone know if it is possible to position columns in a datagrid using VB.net? i.e. Series, BodyStyle, Yr, Make, Model

DataGrid in .aspx
-----------------------
<Columns>
<asp:TemplateColumn SortExpression="1" HeaderText="Yr">
<ItemTemplate>
<asp:TextBox width="40px" ID="liner_year" CssClass="copy" Enabled="False" Columns="1" Text='<%# Container.DataItem("liner_year") %>' Runat="server" />
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn SortExpression="2" HeaderText="Make">
<ItemTemplate>
<asp:TextBox width="125px" ID="liner_make" CssClass="copy" Enabled="False" Columns="2" Text='<%# Container.DataItem("liner_make") %>' Runat="server" />
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn SortExpression="3" HeaderText="Model">
<ItemTemplate>
<asp:TextBox width="125px" ID="liner_model" CssClass="copy" Enabled="False" Columns="3" Text='<%# Container.DataItem("liner_model") %>' Runat="server" />
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn SortExpression="4" HeaderText="Series">
<ItemTemplate>
<asp:TextBox width="125px" ID="liner_series" CssClass="copy" Enabled="False" Columns="4" Text='<%# Container.DataItem("liner_series") %>' Runat="server" />
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn SortExpression="5" HeaderText="Body Style">
<ItemTemplate>
<asp:TextBox width="125px" ID="liner_bodystyle" CssClass="copy" Enabled="False" Columns="5" Text='<%# Container.DataItem("liner_bodystyle") %>' Runat="server" />
</ItemTemplate>
</asp:TemplateColumn>
</Columns>

--------------------
I need to be able to run a stored procedure and depending on the results, place the columns in the appropriate order. i.e. Series, BodyStyle, Yr, Make, Model

Something like this, but I am not sure if this will work with datagrids(and don't know how). I got it to work with textboxes out of a datagrid but need to make it work in a datagrid. Any ideas?

Dim ds2 as DataSet
Dim i as integer
Dim typeCode As String

ds2 = LinersReadFacade.GetLinerUsedFields(_subPubID)
For i = 0 To ds.Tables(0).Rows.Count - 1
typeCode = ds.Tables(0).Rows(i).Item("type_code").ToString()
If ds.Tables(0).Rows(i).Item("column_name") = "vm.year" Then
<asp:TextBox width="40px" ID="liner_year" CssClass="copy" Enabled="False" Columns="" Text='<%# Container.DataItem("liner_year") %>' Runat="server" />
End If
If ds.Tables(0).Rows(i).Item("column_name") = "vm.make" Then
<asp:TextBox width="125px" ID="liner_make" CssClass="copy" Enabled="False" Columns="2" Text='<%# Container.DataItem("liner_make") %>' Runat="server" />
End If
If ds.Tables(0).Rows(i).Item("column_name") = "vm.model" Then
<asp:TextBox width="125px" ID="liner_model" CssClass="copy" Enabled="False" Columns="3" Text='<%# Container.DataItem("liner_model") %>' Runat="server" />
End If
If ds.Tables(0).Rows(i).Item("column_name") = "vm.series" Then
<asp:TextBox width="125px" ID="liner_series" CssClass="copy" Enabled="False" Columns="4" Text='<%# Container.DataItem("liner_series") %>' Runat="server" />
End If
If ds.Tables(0).Rows(i).Item("column_name") = "vm.bodystyle" Then
<asp:TextBox width="125px" ID="liner_bodystyle" CssClass="copy" Enabled="False" Columns="5" Text='<%# Container.DataItem("liner_bodystyle") %>' Runat="server" />
End If
Next

emsaw

9:32 pm on Nov 14, 2005 (gmt 0)

10+ Year Member



If you change your underlying data structure, and have AutoGenerateColumns = True, then the column order will change for the DataGrid. i.e. SELECT ID, Name FROM Authors will have column 1 as ID, column 2 as Name.. If the select statement was SELECT Name, ID FROM Authors, then column 1 would be Name, column 2 would be ID.

aax123

10:45 pm on Nov 14, 2005 (gmt 0)

10+ Year Member



When I change the datagrid property to AutoGenerateColumns = True it displays all the results from the stored procedure and I only want it to show the first 11 columns. How would I do that?

emsaw

4:22 am on Nov 15, 2005 (gmt 0)

10+ Year Member



I believe that there is a .Visible property that you can set for the columns, something along the lines of:

MyDataGrid.Columns(3).Visible = False

-Mark

TheNige

2:24 am on Nov 18, 2005 (gmt 0)

10+ Year Member



You can also use template columns to show only the ones you want.