GridView is making two of each column


N

Nathan Sokalski

I have a GridView control with three columns, all BoundField columns. They
all have a HeaderText and DataField property set, and the third one has a
DataFormatString property as well. When I run my code, the GridView displays
two sets of columns. The first set looks exactly as I would expect. The
second set, which should not be there anyway, uses the DataField as the
header and does not apply the DataFormatString for the third column. What is
going on here? Here is my GridView control:

<asp:GridView ID="grdGifts" runat="server" PageSize="15"
PagerSettings-Mode="NextPrevious" PagerSettings-NextPageText="Next 15
Products" PagerSettings-Position="Bottom"
PagerSettings-PreviousPageText="Previous 15 Products"
EnableSortingAndPagingCallbacks="true" AllowPaging="true"
AllowSorting="true">
<Columns>
<asp:BoundField HeaderText="Products" DataField="prodname"/>
<asp:BoundField HeaderText="Brand" DataField="brandname"/>
<asp:BoundField HeaderText="Action" DataField="prodid"
DataFormatString="[&nbsp;<a
href='edit_product.asp?prodid={0}'>Edit</a>&nbsp;/&nbsp;<a
href='delete_product.asp?prodid={0}'>Delete</a>&nbsp;]"/>
</Columns>
</asp:GridView>

The Load event for the GridView is as follows:

Private Sub grdGifts_Load(ByVal sender As Object, ByVal e As
System.EventArgs) Handles grdGifts.Load
Dim myconnection As New
SqlConnection(System.Configuration.ConfigurationManager.AppSettings("connectionstring"))
Dim gifts As New DataTable
Dim giftadapter As New SqlDataAdapter("SELECT
products.prodname,brands.brandname,products.prodid FROM products INNER JOIN
brands ON prodbrand=brandid", myconnection)
giftadapter.Fill(gifts)
Me.grdGifts.DataSource = gifts
Me.grdGifts.DataBind()
End Sub

If anybody has any idea why this is happening, I would appreciate the help.
Thanks.
 
Ad

Advertisements

N

Nathan Sokalski

My sorting also isn't working. I looked at the generated code, and it looks
correct. Here is the code for my GridView and the databinding:

<asp:GridView ID="grdGifts" runat="server" PageSize="15"
PagerSettings-Mode="NextPrevious" PagerSettings-NextPageText="Next 15
Products" PagerSettings-Position="Bottom"
PagerSettings-PreviousPageText="Previous 15 Products"
EnableSortingAndPagingCallbacks="true" AllowPaging="true"
AllowSorting="true" AutoGenerateColumns="false">
<Columns>
<asp:BoundField HeaderText="Products" DataField="prodname"
SortExpression="products.prodname"/>
<asp:BoundField HeaderText="Brand" DataField="brandname"
SortExpression="brands.brandname"/>
<asp:BoundField HeaderText="Action" DataField="prodid"
DataFormatString="[&nbsp;<a
href='edit_product.asp?prodid={0}'>Edit</a>&nbsp;/&nbsp;<a
href='delete_product.asp?prodid={0}'>Delete</a>&nbsp;]"/>
</Columns>
</asp:GridView>

Private Sub grdGifts_Load(ByVal sender As Object, ByVal e As
System.EventArgs) Handles grdGifts.Load
Dim myconnection As New
SqlConnection(System.Configuration.ConfigurationManager.AppSettings("connectionstring"))
Dim gifts As New DataTable
Dim giftadapter As New SqlDataAdapter("SELECT
products.prodname,brands.brandname,products.prodid FROM products INNER JOIN
brands ON products.prodbrand=brands.brandid", myconnection)
giftadapter.Fill(gifts)
Me.grdGifts.DataSource = gifts
Me.grdGifts.DataBind()
End Sub

Am I also forgetting some simple little thing for the sorting? I have the
AllowSorting="true" and the SortExpression property for the columns that I
need to be sortable. Is there something else I need? Thanks.
--
Nathan Sokalski
(e-mail address removed)
http://www.nathansokalski.com/

Barrie Wilson said:
don't forget the last attribute here:

<asp:DataGrid ID="DefaultGrid" Runat="server" AutoGenerateColumns=False>



Nathan Sokalski said:
I have a GridView control with three columns, all BoundField columns. They
all have a HeaderText and DataField property set, and the third one has a
DataFormatString property as well. When I run my code, the GridView
displays two sets of columns. The first set looks exactly as I would
expect. The second set, which should not be there anyway, uses the
DataField as the header and does not apply the DataFormatString for the
third column. What is going on here? Here is my GridView control:

<asp:GridView ID="grdGifts" runat="server" PageSize="15"
PagerSettings-Mode="NextPrevious" PagerSettings-NextPageText="Next 15
Products" PagerSettings-Position="Bottom"
PagerSettings-PreviousPageText="Previous 15 Products"
EnableSortingAndPagingCallbacks="true" AllowPaging="true"
AllowSorting="true">
<Columns>
<asp:BoundField HeaderText="Products" DataField="prodname"/>
<asp:BoundField HeaderText="Brand" DataField="brandname"/>
<asp:BoundField HeaderText="Action" DataField="prodid"
DataFormatString="[&nbsp;<a
href='edit_product.asp?prodid={0}'>Edit</a>&nbsp;/&nbsp;<a
href='delete_product.asp?prodid={0}'>Delete</a>&nbsp;]"/>
</Columns>
</asp:GridView>

The Load event for the GridView is as follows:

Private Sub grdGifts_Load(ByVal sender As Object, ByVal e As
System.EventArgs) Handles grdGifts.Load
Dim myconnection As New
SqlConnection(System.Configuration.ConfigurationManager.AppSettings("connectionstring"))
Dim gifts As New DataTable
Dim giftadapter As New SqlDataAdapter("SELECT
products.prodname,brands.brandname,products.prodid FROM products INNER
JOIN brands ON prodbrand=brandid", myconnection)
giftadapter.Fill(gifts)
Me.grdGifts.DataSource = gifts
Me.grdGifts.DataBind()
End Sub

If anybody has any idea why this is happening, I would appreciate the
help. Thanks.
 
Ad

Advertisements

T

Teemu Keiski

Code in Page_Load would need to be inside If Not Page.IsPostBack Then check
so that it won't prevent postback events (such as Sorting event) from
working.


--
Teemu Keiski
AspInsider, ASP.NET MVP
http://blogs.aspadvice.com/joteke
http://teemukeiski.net

Nathan Sokalski said:
My sorting also isn't working. I looked at the generated code, and it
looks correct. Here is the code for my GridView and the databinding:

<asp:GridView ID="grdGifts" runat="server" PageSize="15"
PagerSettings-Mode="NextPrevious" PagerSettings-NextPageText="Next 15
Products" PagerSettings-Position="Bottom"
PagerSettings-PreviousPageText="Previous 15 Products"
EnableSortingAndPagingCallbacks="true" AllowPaging="true"
AllowSorting="true" AutoGenerateColumns="false">
<Columns>
<asp:BoundField HeaderText="Products" DataField="prodname"
SortExpression="products.prodname"/>
<asp:BoundField HeaderText="Brand" DataField="brandname"
SortExpression="brands.brandname"/>
<asp:BoundField HeaderText="Action" DataField="prodid"
DataFormatString="[&nbsp;<a
href='edit_product.asp?prodid={0}'>Edit</a>&nbsp;/&nbsp;<a
href='delete_product.asp?prodid={0}'>Delete</a>&nbsp;]"/>
</Columns>
</asp:GridView>

Private Sub grdGifts_Load(ByVal sender As Object, ByVal e As
System.EventArgs) Handles grdGifts.Load
Dim myconnection As New
SqlConnection(System.Configuration.ConfigurationManager.AppSettings("connectionstring"))
Dim gifts As New DataTable
Dim giftadapter As New SqlDataAdapter("SELECT
products.prodname,brands.brandname,products.prodid FROM products INNER
JOIN brands ON products.prodbrand=brands.brandid", myconnection)
giftadapter.Fill(gifts)
Me.grdGifts.DataSource = gifts
Me.grdGifts.DataBind()
End Sub

Am I also forgetting some simple little thing for the sorting? I have the
AllowSorting="true" and the SortExpression property for the columns that I
need to be sortable. Is there something else I need? Thanks.
--
Nathan Sokalski
(e-mail address removed)
http://www.nathansokalski.com/

Barrie Wilson said:
don't forget the last attribute here:

<asp:DataGrid ID="DefaultGrid" Runat="server" AutoGenerateColumns=False>



Nathan Sokalski said:
I have a GridView control with three columns, all BoundField columns.
They all have a HeaderText and DataField property set, and the third one
has a DataFormatString property as well. When I run my code, the GridView
displays two sets of columns. The first set looks exactly as I would
expect. The second set, which should not be there anyway, uses the
DataField as the header and does not apply the DataFormatString for the
third column. What is going on here? Here is my GridView control:

<asp:GridView ID="grdGifts" runat="server" PageSize="15"
PagerSettings-Mode="NextPrevious" PagerSettings-NextPageText="Next 15
Products" PagerSettings-Position="Bottom"
PagerSettings-PreviousPageText="Previous 15 Products"
EnableSortingAndPagingCallbacks="true" AllowPaging="true"
AllowSorting="true">
<Columns>
<asp:BoundField HeaderText="Products" DataField="prodname"/>
<asp:BoundField HeaderText="Brand" DataField="brandname"/>
<asp:BoundField HeaderText="Action" DataField="prodid"
DataFormatString="[&nbsp;<a
href='edit_product.asp?prodid={0}'>Edit</a>&nbsp;/&nbsp;<a
href='delete_product.asp?prodid={0}'>Delete</a>&nbsp;]"/>
</Columns>
</asp:GridView>

The Load event for the GridView is as follows:

Private Sub grdGifts_Load(ByVal sender As Object, ByVal e As
System.EventArgs) Handles grdGifts.Load
Dim myconnection As New
SqlConnection(System.Configuration.ConfigurationManager.AppSettings("connectionstring"))
Dim gifts As New DataTable
Dim giftadapter As New SqlDataAdapter("SELECT
products.prodname,brands.brandname,products.prodid FROM products INNER
JOIN brands ON prodbrand=brandid", myconnection)
giftadapter.Fill(gifts)
Me.grdGifts.DataSource = gifts
Me.grdGifts.DataBind()
End Sub

If anybody has any idea why this is happening, I would appreciate the
help. Thanks.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top