[Webinar] Learn how to a build a cloud-first strategyRegister Now

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 732
  • Last Modified:

Can't set the Header Text in my GridView in ASP.NET C#

I am using ASP.NET 4.0 C# and am trying to programmatically set the Header Text for the GridView on my page.  I am getting an Index was out of range error and can't figure out what I am doing wrong.  Here is the GridView on my page:

            <p><b>Warnings</b></p>
            <asp:GridView ID="gvWarnings" runat="server">
            </asp:GridView>

Open in new window


And here is the code where I am trying to set the HeaderText:

                gvWarnings.DataSource = dtWarnings;
                gvWarnings.CellPadding = 3;
                gvWarnings.CellSpacing = 3;
                gvWarnings.Columns[0].HeaderText = "Warning";
                gvWarnings.Columns[1].HeaderText = "Date";
                gvWarnings.Columns[2].HeaderText = "Title";
                gvWarnings.DataBind();

Open in new window


dtWarnings is a datatable with 3 columns in it.  

Any help is greatly appreciated!
0
dyarosh
Asked:
dyarosh
  • 6
  • 3
1 Solution
 
eli411Commented:
You might have null records in your query!  I would recommand that you check null in your coding - put exception or something.
0
 
dyaroshAuthor Commented:
The table definitely has data.  It displays on the screen if I comment out the code where I am trying to set the Header Column Names.
0
 
eli411Commented:
I know the table has data and you might have one missing records out from your table!  Have you check all individual rows using SQL script?
0
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!

 
eli411Commented:
what is your dtWarnings looks like in code behind or SQL script/stored procedure?  The index error meant that you either reference wrong columns or with some missing data!
0
 
dyaroshAuthor Commented:
Here is the SQL:

            sql = "SELECT WarningType, WarningDate, TitleDesc " +
                  "FROM EMP_Warnings " +
                  "JOIN EMP_WarningType ON EMP_WarningType.WarningTypeID = EMP_Warnings.WarningTypeID " +
                  "WHERE EmployeeID = " + employeeID.ToString();
0
 
dyaroshAuthor Commented:
I ended up setting the column headings in the RowDataBound event.  Thanks for the help.
0
 
eli411Commented:
Here is how I coded my datagrid!

---------------------- aspx page ---------------------- (UserName from database column)

<tr>
     <td>
              <asp:datagrid id="dgTest" runat="server" OnPageIndexChanged="dgTest_OnPageIndexChanged">
                   <asp:TemplateColumn HeaderText="Name">
                          <ITEMTEMPLATE>
                                 <%#DataBinder.Eval(Container.DataItem,"UserName")%>
                          </ITEMTEMPLATE>
                   </asp:TemplateColumn>
              </asp:datagrid>
     </td>
</tr>

------------------------- code behind page ------------------------
public void dgTest_OnPageIndexChanged(Object sender, DataGridItemEventArgs e)
{
    ---- open db connection ---
    .....
    ---- select sql syntax here

}
0

Featured Post

[Webinar] Cloud and Mobile-First Strategy

Maybe you’ve fully adopted the cloud since the beginning. Or maybe you started with on-prem resources but are pursuing a “cloud and mobile first” strategy. Getting to that end state has its challenges. Discover how to build out a 100% cloud and mobile IT strategy in this webinar.

  • 6
  • 3
Tackle projects and never again get stuck behind a technical roadblock.
Join Now