By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
448,962 Members | 1,415 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 448,962 IT Pros & Developers. It's quick & easy.

Datagrid Postback

P: n/a
Hello all,

I have a Datagrid on a page. 1 column is a template column with a checkbox
(unbound). The rest of the columns are databound that are added
programatically.
Grid Definition...

<asp:datagrid id="dgEquipment" tabIndex="50" runat="server"
Width="664px" BackColor="White" BorderColor="#CCCCCC"
ToolTip="Equipment at this location" EnableViewState="true"
PageSize="9999" CellPadding="3"
AutoGenerateColumns="False" BorderWidth="1px" BorderStyle="None">
<SelectedItemStyle Font-Size="Smaller" Font-Names="Arial"
Font-Bold="True" ForeColor="White" BackColor="#669999"></SelectedItemStyle>
<EditItemStyle Font-Size="Larger" Font-Names="Arial"></EditItemStyle>
<AlternatingItemStyle Font-Size="XX-Small"
Font-Names="Arial"></AlternatingItemStyle>
<ItemStyle Font-Size="XX-Small" Font-Names="Arial"
ForeColor="#000066"></ItemStyle>
<HeaderStyle Font-Size="Smaller" Font-Names="Arial" Font-Bold="True"
ForeColor="Black" BackColor="#D3F2FE"></HeaderStyle>
<FooterStyle ForeColor="#000066" BackColor="White"></FooterStyle>
<Columns>
<asp:TemplateColumn>
<ItemTemplate>
<asp:CheckBox runat="server" AutoPostBack="false"></asp:CheckBox>
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
<PagerStyle Font-Size="Smaller" Font-Names="Arial"
HorizontalAlign="Left" ForeColor="#000066"
BackColor="White" Mode="NumericPages"></PagerStyle>
</asp:datagrid>

Private Sub InitGrid()

' Add the columns programmatically since we will eventually let the
users define which columns are displayed...
If dgEquipment.Columns.Count <= 1 Then

Dim col As BoundColumn

col = New BoundColumn
col.HeaderText = "Counter"
col.HeaderStyle.HorizontalAlign = HorizontalAlign.Center
col.ItemStyle.HorizontalAlign = HorizontalAlign.Left
col.DataField = "Counter"
col.ItemStyle.Font.Size = System.Web.UI.WebControls.FontUnit.XXSmall
col.Visible = False
dgEquipment.Columns.Add(col)

col = New BoundColumn
col.HeaderText = "Make"
col.HeaderStyle.HorizontalAlign = HorizontalAlign.Center
col.ItemStyle.HorizontalAlign = HorizontalAlign.Left
col.DataField = "MFG"
col.ItemStyle.Font.Size = System.Web.UI.WebControls.FontUnit.XXSmall
dgEquipment.Columns.Add(col)

col = New BoundColumn
col.HeaderStyle.HorizontalAlign = HorizontalAlign.Center
col.ItemStyle.HorizontalAlign = HorizontalAlign.Left
col.HeaderText = "Model"
col.DataField = "MODEL"
col.ItemStyle.Font.Size = System.Web.UI.WebControls.FontUnit.XXSmall
dgEquipment.Columns.Add(col)

col = New BoundColumn
col.HeaderStyle.HorizontalAlign = HorizontalAlign.Center
col.ItemStyle.HorizontalAlign = HorizontalAlign.Left
col.HeaderText = "Serial #"
col.DataField = "SERIAL"
col.ItemStyle.Font.Size = System.Web.UI.WebControls.FontUnit.XXSmall
dgEquipment.Columns.Add(col)

col = New BoundColumn
col.HeaderStyle.HorizontalAlign = HorizontalAlign.Center
col.ItemStyle.HorizontalAlign = HorizontalAlign.Right
col.HeaderText = "Install Date"
col.DataField = "INSTALL"
col.DataFormatString = "{0:d}"
col.ItemStyle.Font.Size = System.Web.UI.WebControls.FontUnit.XXSmall
dgEquipment.Columns.Add(col)

col = New BoundColumn
col.HeaderStyle.HorizontalAlign = HorizontalAlign.Center
col.ItemStyle.HorizontalAlign = HorizontalAlign.Right
col.HeaderText = "Warranty"
col.DataField = "Warranty"
col.DataFormatString = "{0:d}"
col.ItemStyle.Font.Size = System.Web.UI.WebControls.FontUnit.XXSmall
dgEquipment.Columns.Add(col)

col = New BoundColumn
col.HeaderStyle.HorizontalAlign = HorizontalAlign.Center
col.ItemStyle.HorizontalAlign = HorizontalAlign.Right
col.HeaderText = "Agreement #"
col.DataField = "SerAgrNo"
col.ItemStyle.Font.Name = "Arial"
col.ItemStyle.Font.Size = System.Web.UI.WebControls.FontUnit.XXSmall
dgEquipment.Columns.Add(col)

End If
End Sub

Private Sub LoadGrid()

' Equipment Grid

Dim equip As New clsEquip
equip.InitDBConnection(Session("ConnectionString") )
equip.Load(Session("CustNo"), Session("LocNo"))
dgEquipment.DataSource = equip

DataBind()

equip = Nothing

End Sub
With the following the grid displays all the data and the checkbox
correctly. But when I click any button on the screen any checks I have made
are cleared so I can't check and see what the user checked....

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load

If IsPostBack Then

' Do some stuff here

Else

' Do other stuff here

End If

InitGrid()
LoadGrid()

Exit Sub
With this one the second time around the grid is empty except for the
checkbox column...

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
If IsPostBack Then

' Do some stuff here

Else

' Do other stuff here
InitGrid()
LoadGrid()
End If
Exit Sub
I am sure I am just missing something. Thanks in advance!

Bob

Nov 18 '05 #1
Share this Question
Share on Google+
1 Reply


P: n/a
Bob,

You will probably get MANY responses to this but I will chime in
also. There is a known challenge with the DataGrid control when
columns are added programmatically. As I understand it, it has to do
with when the View State is applied back to grid and the concept the
programmatically bound columns are not stored in the viewstate and the
fact that the view state is applied after the bad init but before the
page load events. The answer I had to implement was to rebuild the
layout of the datagrid and rebind it in the Init Event of the page.

I hope this helps.
George
Nov 18 '05 #2

This discussion thread is closed

Replies have been disabled for this discussion.