Solved

Creating an editable datagrid in asp.net / vb.net, Internet Explorer 7.0

Posted on 2007-11-28
8
1,641 Views
Last Modified: 2013-11-26
Greetings,

I know at the end of this I will be kicking myself, but right now I am having a brain fart and cannot for the life of me remember how to set this up.

I am trying to create an editable datagrid and here is the datagrid source:

<asp:datagrid id="dgItemsReturn" runat="server" showfooter="true" AutoGenerateColumns="false"
                                    Width="80%" HeaderStyle-BackColor="#3399FF" HeaderStyle-CssClass="btextwhite" HeaderStyle-VerticalAlign="bottom"
                                    HeaderStyle-HorizontalAlign="center" FooterStyle-BackColor="#3399FF" ItemStyle-BackColor="#FFFFCC" ItemStyle-CssClass="dtltext"
                                    ItemStyle-VerticalAlign="top" AlternatingItemStyle-BackColor="#FFFFFF" CellPadding="1" BorderColor="#CCCCCC"
                                    BorderWidth="1">
                                    <Columns>
                                          <asp:TemplateColumn HeaderText="Id">
                                                <HeaderStyle Font-Bold="True" HorizontalAlign="Center" VerticalAlign="Top"></HeaderStyle>
                                                <ItemTemplate>
                                                      <asp:label id="lblMerchReturnItemRecId" runat="server" cssclass="rtext"></asp:label>
                                                      <asp:TextBox id="tbxRecStatus" visible="false" runat="server"></asp:TextBox>
                                                </ItemTemplate>
                                          </asp:TemplateColumn>
                                          <asp:TemplateColumn HeaderText="BV Item">
                                                <HeaderStyle Font-Bold="True" HorizontalAlign="Center" VerticalAlign="Top"></HeaderStyle>
                                                <ItemTemplate>
                                                      <asp:TextBox id="tbxBvItem" cssclass="rtext" runat="server"></asp:TextBox>
                                                </ItemTemplate>
                                                <footertemplate>
                                                      <asp:TextBox id="tbxNewBvItem" cssclass="rtext" runat="server"></asp:TextBox>
                                                </footertemplate>
                                          </asp:TemplateColumn>
                                          <asp:TemplateColumn HeaderText="Description">
                                                <HeaderStyle Font-Bold="True" HorizontalAlign="Center" VerticalAlign="Top"></HeaderStyle>
                                                <ItemTemplate>
                                                      <asp:TextBox ID="tbxBvItemDesc" cssclass="rtext" Runat="server"></asp:TextBox>
                                                </ItemTemplate>
                                                <footertemplate>
                                                      <asp:TextBox id="tbxNewBvItemDesc" cssclass="rtext" runat="server"></asp:TextBox>
                                                </footertemplate>
                                          </asp:TemplateColumn>
                                          <asp:TemplateColumn HeaderText="Qty">
                                                <HeaderStyle Font-Bold="True" HorizontalAlign="Center" VerticalAlign="Top"></HeaderStyle>
                                                <ItemTemplate>
                                                      <asp:TextBox ID="tbxBvItemQty" cssclass="rtext" Runat="server"></asp:TextBox>
                                                </ItemTemplate>
                                                <footertemplate>
                                                      <asp:TextBox id="tbxNewBvItemQty" cssclass="rtext" runat="server"></asp:TextBox>
                                                </footertemplate>
                                          </asp:TemplateColumn>
                                          <asp:TemplateColumn HeaderText="Unit Price">
                                                <HeaderStyle Font-Bold="True" HorizontalAlign="Center" VerticalAlign="Top"></HeaderStyle>
                                                <ItemTemplate>
                                                      <asp:TextBox ID="tbxBvItemUnitPrice" cssclass="rtext" Runat="server"></asp:TextBox>
                                                </ItemTemplate>
                                                <footertemplate>
                                                      <asp:TextBox id="tbxNewBvItemUnitPrice" cssclass="rtext" runat="server"></asp:TextBox>
                                                </footertemplate>
                                          </asp:TemplateColumn>
                                          <asp:TemplateColumn HeaderText="Total">
                                                <HeaderStyle Font-Bold="True" HorizontalAlign="Center" VerticalAlign="Top"></HeaderStyle>
                                                <ItemTemplate>
                                                      <asp:label id="lblBvItemTotalCost" runat="server" cssclass="rtext"></asp:label>
                                                </ItemTemplate>
                                                <footertemplate>
                                                      <asp:LinkButton Runat="server" Text="Add" CommandName="AddItem" ID="lkbAddItem" NAME="Linkbutton1"></asp:LinkButton>
                                                </footertemplate>
                                          </asp:TemplateColumn>
                                    </Columns>
                              </asp:datagrid>

I plan to populate this datagrid from a database table (sql server 2000) and have the itemdatabound event all set up when the return resultset is bound to the datagrid. My problem is that if there is no items in the resultset, how do I get the get the grid to show up with the footer templates, so that the user can enter in new items.

Like I said at the start, probably will kick myself once I see the solution, but in the mean time if anyone can help out here, I would appreciate it. Thanks.

JD
0
Comment
Question by:JDEE8297
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 4
  • 4
8 Comments
 
LVL 11

Expert Comment

by:cmhunty
ID: 20365595
'Fraid the only reason you'd be kicking yourself is because of the nasty way you have to do it considering how simple your request is.

I had exactly the same problem and I'll point you to http://www.codeproject.com/useritems/Fix_empty_GridView_issue.asp which should solve your problem.

0
 

Author Comment

by:JDEE8297
ID: 20365751
I think I am going to need a bigger foot ;)
I will try this and see if it does the job for me, I don't know c# very well, but what I am able to figure out what the code is doing. So it is not too bad. Thanks again. If this works, then I will let you know.


0
 

Author Comment

by:JDEE8297
ID: 20365890
actually, I guess I am not sure how this can work, and it is probably like of C# knowledge that is hurting me right now.

If you don't have anything assigned to the datagrid, how does it create the data columns?
0
SharePoint Admin?

Enable Your Employees To Focus On The Core With Intuitive Onscreen Guidance That is With You At The Moment of Need.

 
LVL 11

Expert Comment

by:cmhunty
ID: 20366004
I'll have a look at converting to VB.NET for you. As I said, I've done this before but was at my old job so don't have the code to hand.

Basically, this is what happens:
After you've bound the gridview.
Check the amount of rows in gridview
If 0, copy the source of the gridview to a datatable
Adds an empty row to datatable
Rebind the gridview
Hide the empty row

I'll get back to your shortly


0
 
LVL 11

Accepted Solution

by:
cmhunty earned 125 total points
ID: 20366018
Are you using ASP.NET 2.0? If so, I think you'll need to convert your datagrid to a gridview control........
0
 

Author Closing Comment

by:JDEE8297
ID: 31411417
I eventually did find a way to convert the c# to vb.net, this link is really helpful incase you ever need to pass it onto someone.

http://labs.developerfusion.co.uk/convert/csharp-to-vb.aspx

I got it to work, and I did not have to kick my self as I thought I would, so thanks again for your help on this one.

For the record, was using datagrid with asp.net 1.1 (long story short, just started here recently at my current job and they are still in the land of 1.1, which is funny considering my previous job was the land of 2.0).

Thanks again for your help.
0
 

Author Comment

by:JDEE8297
ID: 20366110
thanks again, got it to work.

found this link to convert c# to vb.net

http://labs.developerfusion.co.uk/convert/csharp-to-vb.aspx
0
 
LVL 11

Expert Comment

by:cmhunty
ID: 20366161
Good stuff - I've just converted it so for anyone else that may be interested:

    Private Sub FixEmptyGridView(ByVal gv As GridView)
        If gv.Rows.Count = 0 And gv.DataSource Is DBNull.Value = False Then
            Dim dt As DataTable
            If gv.DataSource.GetType.Name = "DataSet" Then
                dt = CType(gv.DataSource, DataSet).Tables(0)
            ElseIf gv.DataSource.GetType.Name = "DataTable" Then
                dt = CType(gv.DataSource, DataTable)
            End If
            If dt Is Nothing Then
                Return
            End If
            dt.Rows.Add(dt.NewRow)
            gv.DataSource = dt
            gv.DataBind()
            gv.Rows(0).Visible = False
            gv.Rows(0).Controls.Clear()
        End If
    End Sub
0

Featured Post

Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

This document covers how to connect to SQL Server and browse its contents.  It is meant for those new to Visual Studio and/or working with Microsoft SQL Server.  It is not a guide to building SQL Server database connections in your code.  This is mo…
For those of you who don't follow the news, or just happen to live under rocks, Microsoft Research released a beta SDK (http://www.microsoft.com/en-us/download/details.aspx?id=27876) for the Xbox 360 Kinect. If you don't know what a Kinect is (http:…
This is a high-level webinar that covers the history of enterprise open source database use. It addresses both the advantages companies see in using open source database technologies, as well as the fears and reservations they might have. In this…
There's a multitude of different network monitoring solutions out there, and you're probably wondering what makes NetCrunch so special. It's completely agentless, but does let you create an agent, if you desire. It offers powerful scalability …

705 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question