Click here to Skip to main content
Rate this: bad
good
Please Sign up or sign in to vote.
Hi ,
 
I am facing a strange problem while working gridview .Here is the problem description:
 
I am using a gridview which consist of boundfields and templatefields. templatefields contains some controls like check boxes and image. My gridview contains one template field at last colummn. My requirement is to add the N nnumber of boundfields before last templatefield at runtime. I have added the code something like this:
Grid.datasource=ds
grid.columns.insert(index,column)
grid.databind()
Now the gridview displays all the boundfields and tempaltefields(with controls added within it) along with the newly added boundfields. But the controls within templatefield disappears on page postback however newly added boundfields are displayed correctly.
 
I tried to disable the gridview viewstate and binded the grid on onInit/PreRender event of page in this case controls are visible but here faced some other problem. in this case the gridview.rows.count is zero and gridview rows are not readable.
 
Can anyone help me solving this strange problem.
 

Thanks
S.S.thakur
 
[Edit]Code block added[/Edit]
Posted 23-Feb-13 6:07am
Edited 23-Feb-13 6:08am
ProgramFOX122.7K
v2
Comments
S. M. Ahasan Habib at 24-Feb-13 0:58am
   
Please upload your markup code. When you bind your grid with data source then do you conditionlly bind that like If Page.IsPostBack?
Member 4276543 at 25-Feb-13 9:05am
   
Hi Habib,
Below is the markup code:
*********************************************************
<asp:GridView ID="gdMerge" AutoGenerateColumns="false" runat="server">

<asp:TemplateField>
<HeaderTemplate>
<asp:CheckBox ID="chkAll" runat="server" />
</HeaderTemplate>

<asp:CheckBox ID="chkSelect" runat="server" />


<asp:BoundField DataField="ID" HeaderText="ID">
<asp:BoundField DataField="Name" HeaderText="Name">
<asp:TemplateField>

<asp:Image ID="imgCheck" class="test" runat="server" ImageUrl="~/Images/icon_delete.png" />




<asp:DataGrid AutoGenerateColumns="false" runat="server" ID="grid">

<asp:BoundColumn DataField="ID" HeaderText="ID">
<asp:BoundColumn DataField="Name" HeaderText="Name">
<asp:TemplateColumn>

<asp:Image ID="imgCheck" class="test" runat="server" ImageUrl="~/Images/icon_delete.png" />




*************************************************************************
Below is .vb code:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not IsPostBack Then
BindGrid()
End If
 
End Sub
 
Private Sub BindGrid()
Dim ds As DataSet = ds1()
gdMerge.DataSource = ds
AddBoundfield()
gdMerge.DataBind()
End Sub
 

Private Sub AddBoundfield()
 
Dim column As New BoundField With {.HeaderText = "New Column"}
gdMerge.Columns.Insert(gdMerge.Columns.Count - 1, column)
For i As Integer = 0 To gdMerge.Columns.Count - 2
If gdMerge.Columns(i).HeaderText = "New Column" Then
gdMerge.Columns.RemoveAt(i)
End If
Next
End Sub
 
Thank you
Sardar

1 solution

Rate this: bad
good
Please Sign up or sign in to vote.

Solution 1

It is default behavior for dynamic control for ASP.net web form. Because ASP.net can not remember dynamic object using viewstate. For example if you create a textbox dynamically from your load event and add that to any panel using condition like if !Page.IsPostBack then first time you see the TextBox in your form but next time when it postback then the textbox will be destroyed. What you will do every postback/non postback you need to create that textbox and add to the panel control. Same thing happen here for Your BoundField control in GridView. So you can do is everytime you should create that BoundField and attached to grid.
  Permalink  

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

  Print Answers RSS
0 Sergey Alexandrovich Kryukov 768
1 OriginalGriff 420
2 CPallini 275
3 George Jonsson 231
4 Richard Deeming 145
0 OriginalGriff 5,450
1 CPallini 4,500
2 Sergey Alexandrovich Kryukov 4,272
3 George Jonsson 3,057
4 Gihan Liyanage 2,445


Advertise | Privacy | Mobile
Web04 | 2.8.140916.1 | Last Updated 25 Feb 2013
Copyright © CodeProject, 1999-2014
All Rights Reserved. Terms of Service
Layout: fixed | fluid

CodeProject, 503-250 Ferrand Drive Toronto Ontario, M3C 3G8 Canada +1 416-849-8900 x 100