Skip to main content

Adding a Footer to the DataGridView component

I have been searching for sites and forums that would give me a any hint on having a footer on the .net DataGridView control. It was frustrating. I found some, but not what I was looking for. I use windows forms. It would have been easier if I was into web. I decided to create one for myself. It's not complete, but it works with me. It needs improvement and I hope that some programmers who might pass through this blog will help me with it :D.

Limitations:
  1. Cannot set Footer values during design time.
  2. Can sometimes hide a row when scrolled to the last item in the grid.
What I did was just create a user control that inherits the DataGridView control and add a StatusStrip to act as the footer.


public partial class MyDataGridView : DataGridView
{

public StatusStrip Footer
{
get { return (StatusStrip)this.Controls["Footer"]; }
}

private bool _footerVisible;
[Browsable(false)]
///
/// Sets or Gets the value specifying if a footer bar is shown or not
///

public bool FooterVisible
{
get { return _footerVisible; }
set
{
_footerVisible = value;
this.Controls["Footer"].Visible = _footerVisible;
}
}

public MyDataGridView()
{
InitializeComponent();
StatusStrip footer = new StatusStrip();
footer.Name = "Footer";
footer.ForeColor = Color.Black;

this.Controls.Add(footer);
((StatusStrip)this.Controls["Footer"]).Visible = _footerVisible;
((StatusStrip)this.Controls["Footer"]).VisibleChanged += new EventHandler(RDataGridView_VisibleChanged);
this.Scroll += new ScrollEventHandler(RDataGridView_Scroll);
_footerItems = ((StatusStrip)this.Controls["Footer"]).Items;
}
}


The next thing to do is to compile the user control then get on to using it. We can then specify the footer's properties programmatically at the form that uses it (like add a progress bar or label to the footer).

Well, I hope someone will be able to read this blog and enhance the control.

Comments

Anonymous said…
I solved this problem by adding a second datagrid instead of a status strip. Basically I add the datagrid, make it show only one row, and then ensure that it always displays at the bottom so it appears as a frozen row. Then as the user resizes the parent datagrid columns, reorders etc etc, I account for this by adjusting the child datagrid. That way the child datagrid always looks like it is on the parent datagrid. The only problem I ran into was the very last row in the parent datagrid is half hidden by the child datagrid. If I could figure out how to detect when the user has scrolled to the end of the datagrid, I could fix this.

Jason

Popular posts from this blog

How to register a business name

Attending business summits and conferences is a big help to those who belong to the quite "techy" (technological or technical) industry. Being a graduate of one, I had less knowledge in the field of entrepreneurship. Enrolling myself in business administration gave me quite the knowledge to be a part of the business world and thus improve my entrepreneurial skills. I now would like to share this information that I got familiar with (and I managed to get a copy of the entire process from the 6th Mindanao ICT Congress): How to Register a Business Name (in the Philippines) ----------------------------------------------------------------------------------------------- SINGLE PROPRIETORSHIP Applicant must secure 2 copies of registration form and pay Php 300.00 (rate may change) for single proprietorship registration processing fee. The registration shall be valid for five (5) years. A surcharge of Php 100.00 is imposed if renewal is filed beyond the three (3) month grace period, c...

How to cheat blog polls

Ok, I really need to post this. Many bloggers put polls on their blog sites and rely heavily on the results that they give and some even draw conclusions based on those data. The problem is that they don't check where the data those polls are generating are stored. Many polls don't even record the voter's information. Well to those of you who want to cheat polls (I mean blog polls. Some polls are really reliable), here are some points: 1. These polls don't store your IP address nor your MAC address, how then do you think are they checking for flying voters? COOKIES! 2. Now you already have an idea. Now try to vote to a blogger's poll then clear your cookies and refresh the page. You'll be able to vote again. 3. If #2 doesn't work, there's a big chance that your voting data is stored on internet temporary files. Now you know what to do. Delete those files. 4. If #3 doesn't work, then your data might have been stored elsewhere. You might want to use a ...