Solved

How to access gridview DataRow field to conditionally set Gridview Header field

Posted on 2011-09-06
2
518 Views
Last Modified: 2013-11-26
I have a gridview.  One of my dataRow fields holds either an "H" or a "D" value to indicate "Hours" or "Days".    I want to display "Hours" or "Days" in the header based on the dataRow field value.

Is there a way to determine the value of the dataRow field when the gridview is processing the Header row?  

 if (e.Row.RowType == DataControlRowType.Header)
            {
                if (e.Row.Cells[2].Text.Contains("H"))  This is the datarow field value I'm trying to access (this doesn't work)

0
Comment
Question by:ppeterso
[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
2 Comments
 
LVL 28

Expert Comment

by:strickdd
ID: 36491146
1. create an OnDataBound event for the gridview.
2. Then, assuming all no row can have an "H" when another row contains a "D", look at the first row
3. If the first row has an "H" change the gridview header row column
4. Do the same if the row has a "D"
0
 
LVL 17

Accepted Solution

by:
Carlos Villegas earned 250 total points
ID: 36491772
Hello, assuming that your GridView DataSource is a DataTable object I did this example for you:
<%@ Import Namespace="System.Data" %>

<%@ Page Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
    Random rnd = new Random();

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            // Default show hours data.
            Button1_Click(this, e);
        }
    }

    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.Header)
        {
            DataTable dtt = GridView1.DataSource as DataTable;
            if (dtt != null && dtt.Rows.Count > 0)
            {
                if (dtt.Rows[0]["ColumnB"].ToString().Equals("H"))
                    e.Row.Cells[0].Text = "Hours";
                else
                    e.Row.Cells[0].Text = "Days";

                return;
            }
        }
    }

    protected void Button1_Click(object sender, EventArgs e)
    {
        // Show hours data.
        BindMyData(true);
    }

    protected void Button2_Click(object sender, EventArgs e)
    {
        // Show days data.
        BindMyData(false);
    }

    void BindMyData(bool hours)
    {
        DataTable dtt = new DataTable();
        dtt.Columns.Add("ColumnA", typeof(int));
        dtt.Columns.Add("ColumnB", typeof(string));

        for (int i = 0; i < 12; i++)
        {
            dtt.Rows.Add(rnd.Next(1, 120), hours ? "H" : "D");
        }

        GridView1.DataSource = dtt;
        GridView1.DataBind();
    }

</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" OnRowDataBound="GridView1_RowDataBound">
            <Columns>
                <asp:BoundField DataField="ColumnA" />
                <asp:BoundField DataField="ColumnB" />
            </Columns>
        </asp:GridView>
        <asp:Button ID="Button1" runat="server" Text="Show Hours Data" OnClick="Button1_Click" />
        <br />
        <asp:Button ID="Button2" runat="server" Text="Show Days Data" OnClick="Button2_Click" />
        <br />
    </div>
    </form>
</body>
</html>

Open in new window


You can download the full aspx file from this link:
http://dl.dropbox.com/u/13237304/EE/CustomGridView.zip

I hope this helps.
0

Featured Post

Free Tool: Subnet Calculator

The subnet calculator helps you design networks by taking an IP address and network mask and returning information such as network, broadcast address, and host range.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

Question has a verified solution.

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

Suggested Solutions

Title # Comments Views Activity
Form Data Disappears Using Back Button 4 65
c# ftp code 3 56
vb.net application has warrnings about VB6 calls. 2 45
C#: How do I test for null objects and a dub a value? 2 37
Problem Hi all,    While many today have fast Internet connection, there are many still who do not, or are connecting through devices with a slower connect, so light web pages and fast load times are still popular.    If your ASP.NET page …
Calculating holidays and working days is a function that is often needed yet it is not one found within the Framework. This article presents one approach to building a working-day calculator for use in .NET.
Nobody understands Phishing better than an anti-spam company. That’s why we are providing Phishing Awareness Training to our customers. According to a report by Verizon, only 3% of targeted users report malicious emails to management. With compan…
In a recent question (https://www.experts-exchange.com/questions/29004105/Run-AutoHotkey-script-directly-from-Notepad.html) here at Experts Exchange, a member asked how to run an AutoHotkey script (.AHK) directly from Notepad++ (aka NPP). This video…

739 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