How to extend ASP.NET datagrid for multi-selection of data rows.
<Columns>
<asp:TemplateColumn>
<HeaderTemplate>
<asp:CheckBox id="chkAll"
<B>onclick="javascript:SelectAllCheckboxes(this);"</B> runat="server"
AutoPostBack="false" ToolTip="Select/Deselect All" />
</HeaderTemplate>
<ItemTemplate>
<asp:CheckBox id="chkSelect" <B>onclick="javascript:HighlightRow(this);"</B>
runat="server"<B>OnCheckedChanged= "grdEmployees_CheckedChanged"</B>
AutoPostBack="false" />
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
//-------------------------------------------------------------
// Select all the checkboxes (Hotmail style)
//-------------------------------------------------------------
function SelectAllCheckboxes(spanChk){
// Added as ASPX uses SPAN for checkbox
var oItem = spanChk.children;
var theBox=oItem.item(0)
xState=theBox.checked;
elm=theBox.form.elements;
for(i=0;i<elm.length;i++)
if(elm[i].type=="checkbox" && elm[i].id!=theBox.id)
{
//elm[i].click();
if(elm[i].checked!=xState)
elm[i].click();
//elm[i].checked=xState;
}
}
//-------------------------------------------------------------
//----Select highlish rows when the checkboxes are selected
//
// Note: The colors are hardcoded, however you can use
// RegisterClientScript blocks methods to use Grid's
// ItemTemplates and SelectTemplates colors.
// for ex: grdEmployees.ItemStyle.BackColor OR
// grdEmployees.SelectedItemStyle.BackColor
//-------------------------------------------------------------
function HighlightRow(chkB) {
var oItem = chkB.children;
xState=oItem.item(0).checked;
if(xState)
{chkB.parentElement.parentElement.style.backgroundColor='lightcoral';
// grdEmployees.SelectedItemStyle.BackColor
chkB.parentElement.parentElement.style.color='white';
// grdEmployees.SelectedItemStyle.ForeColor
}else
{chkB.parentElement.parentElement.style.backgroundColor='white';
//grdEmployees.ItemStyle.BackColor
chkB.parentElement.parentElement.style.color='black';
//grdEmployees.ItemStyle.ForeColor
}
}
// -->
转自 http://www.codeproject.com/aspnet/Multi-select_Dataagrid.asp