Datagrid Heading (Text - Clickable) and Row Elements (checkboxes) = Select All Feature

B

BTHOMASinOHIO

I have spent all day trying to do this and have come up with a
headache !!

I have a DataGrid and a couple which is not bound to any data (it's a
Template Column with all of the column rows as Checkboxes).

Once the DataGrid is bound, it should allow the user to click on the
column heading a (through JavaScript or a Server Side function) will
check or uncheck all of the columns rows checkboxes.

I have seen may examples of the Heading used for sorting or a checkbox
in the heading to handle this but this is not what is being asked for.

1. How can I change the Template Column Heading to a "clickable" Text
button (if that's possible). (Link button ?!)
 
M

Matt

Checkout the event ItemCreated
and check when the header row is being created.... create a checkbox in the
cell required.

this.ItemCreated += new DataGridItemEventHandler(myGrid_ItemCreated);



private void myGrid_ItemCreated(object sender, DataGridItemEventArgs e)
{

if (e.Item.ItemType == ListItemType.Header)
{
CheckBox chk = new CheckBox();
chk.ID = "chkAll";
chk.Checked = false;
chk.CssClass = "checkBox";

e.Item.Cells[3].Controls.Add(chk);
}
}

Matt.
 
M

Matt

I forgot to mention... you need to add:

chk.AutoPostback = true;

chk.CheckedChanged += new EventHandler(chk_CheckedChanged);


to handle the event:

private void chk_CheckedChanged(object sender, EventArgs e)
{

bool checked = ((CheckBox)sender).Checked;

// do something based on whether the checkbox is checked or not. i.e. run
through each row and change the Checked property by finding the control in
the cell.

CheckBox chk;

foreach (DataGridItem dgi in myDataGrid.Items)

{

if (dgi.ItemType != ListItemType.Header)

{

chk = (CheckBox)FindControl("chkDelete");

if (chk != null)

chk.Checked = checked;

}

}


Matt said:
Checkout the event ItemCreated
and check when the header row is being created.... create a checkbox in the
cell required.

this.ItemCreated += new DataGridItemEventHandler(myGrid_ItemCreated);



private void myGrid_ItemCreated(object sender, DataGridItemEventArgs e)
{

if (e.Item.ItemType == ListItemType.Header)
{
CheckBox chk = new CheckBox();
chk.ID = "chkAll";
chk.Checked = false;
chk.CssClass = "checkBox";

e.Item.Cells[3].Controls.Add(chk);
}
}

Matt.


BTHOMASinOHIO said:
I have spent all day trying to do this and have come up with a
headache !!

I have a DataGrid and a couple which is not bound to any data (it's a
Template Column with all of the column rows as Checkboxes).

Once the DataGrid is bound, it should allow the user to click on the
column heading a (through JavaScript or a Server Side function) will
check or uncheck all of the columns rows checkboxes.

I have seen may examples of the Heading used for sorting or a checkbox
in the heading to handle this but this is not what is being asked for.

1. How can I change the Template Column Heading to a "clickable" Text
button (if that's possible). (Link button ?!)
 

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

Staff online

Members online

Forum statistics

Threads
473,734
Messages
2,569,441
Members
44,832
Latest member
GlennSmall

Latest Threads

Top