I have a Grid control with one column of checkboxes. When I click on the checkbox in the header, select a value in a dropdown list, and then click a button two sql commands should run. However the sql commands are only executing for the top selected row in the Grid. I need it to execute for all checked rows. What's wrong with my code? When I click on the checkbox in the header the checkboxes on each row within the visible Grid are selected as expected.
Grid Markup:
<
telerik:RadGrid
ID
=
"rgUnassnd"
runat
=
"server"
DataSourceID
=
"sdsRgUnassnd"
AutoGenerateColumns
=
"False"
AllowPaging
=
"True"
AllowSorting
=
"True"
AllowFilteringByColumn
=
"True"
ShowGroupPanel
=
"True"
Skin
=
"Default"
AllowMultiRowSelection
=
"true"
>
<
ClientSettings
AllowDragToGroup
=
"True"
AllowColumnsReorder
=
"True"
ReorderColumnsOnClient
=
"True"
>
<
Selecting
AllowRowSelect
=
"true"
/>
</
ClientSettings
>
<
MasterTableView
DataSourceID
=
"sdsRgUnassnd"
DataKeyNames
=
"assnmtIdPk"
CommandItemDisplay
=
"Top"
>
<
CommandItemSettings
ShowRefreshButton
=
"true"
ShowAddNewRecordButton
=
"false"
/>
<
Columns
>
<
telerik:GridTemplateColumn
UniqueName
=
"CheckTemp"
>
<
ItemTemplate
>
<
asp:CheckBox
ID
=
"chkI"
runat
=
"server"
/>
</
ItemTemplate
>
<
HeaderTemplate
>
<
asp:CheckBox
ID
=
"chkH"
runat
=
"server"
AutoPostBack
=
"true"
OnCheckedChanged
=
"chkH_CheckedChanged"
/>
</
HeaderTemplate
>
</
telerik:GridTemplateColumn
>
<
telerik:GridBoundColumn
DataField
=
"assnmtIdPk"
ReadOnly
=
"True"
HeaderText
=
"assnmtIdPk"
SortExpression
=
"assnmtIdPk"
UniqueName
=
"assnmtIdPk"
DataType
=
"System.Int32"
FilterControlAltText
=
"Filter assnmtIdPk column"
></
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"clmNo"
HeaderText
=
"Claim"
SortExpression
=
"clmNo"
UniqueName
=
"clmNo"
FilterControlAltText
=
"Filter clmNo column"
HeaderStyle-HorizontalAlign
=
"Center"
ItemStyle-HorizontalAlign
=
"Center"
HeaderStyle-Font-Bold
=
"true"
></
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"assCrtdDt"
ReadOnly
=
"true"
HeaderText
=
"Date Received"
SortExpression
=
"assCrtdDt"
UniqueName
=
"assnmtCrtdDt"
DataType
=
"System.DateTime"
FilterControlAltText
=
"Filter assnmtCrtdDt column"
HeaderStyle-HorizontalAlign
=
"Center"
ItemStyle-HorizontalAlign
=
"Center"
HeaderStyle-Font-Bold
=
"true"
></
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"clientNm"
HeaderText
=
"Client"
SortExpression
=
"clientNm"
UniqueName
=
"clientNm"
FilterControlAltText
=
"Filter clientNm column"
HeaderStyle-HorizontalAlign
=
"Center"
ItemStyle-HorizontalAlign
=
"Center"
HeaderStyle-Font-Bold
=
"true"
></
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"carr"
HeaderText
=
"Carrier"
SortExpression
=
"carr"
UniqueName
=
"carr"
FilterControlAltText
=
"Filter carr column"
HeaderStyle-HorizontalAlign
=
"Center"
ItemStyle-HorizontalAlign
=
"Center"
HeaderStyle-Font-Bold
=
"true"
></
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"riskAddCity"
HeaderText
=
"Risk City"
SortExpression
=
"riskAddCity"
UniqueName
=
"riskAddCity"
FilterControlAltText
=
"Filter riskAddCity column"
HeaderStyle-HorizontalAlign
=
"Center"
ItemStyle-HorizontalAlign
=
"Center"
HeaderStyle-Font-Bold
=
"true"
></
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"provNm"
HeaderText
=
"Province"
SortExpression
=
"provNm"
UniqueName
=
"provNm"
FilterControlAltText
=
"Filter provNm column"
HeaderStyle-HorizontalAlign
=
"Center"
ItemStyle-HorizontalAlign
=
"Center"
HeaderStyle-Font-Bold
=
"true"
></
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"riskZip"
HeaderText
=
"Zip Code"
SortExpression
=
"riskZip"
UniqueName
=
"riskZip"
FilterControlAltText
=
"Filter riskZip column"
HeaderStyle-HorizontalAlign
=
"Center"
ItemStyle-HorizontalAlign
=
"Center"
HeaderStyle-Font-Bold
=
"true"
></
telerik:GridBoundColumn
>
</
Columns
>
</
MasterTableView
>
</
telerik:RadGrid
>
Here's the code behind:
protected
void
assignUsers_Click(
object
sender, EventArgs e)
{
string
tascnxn = ConfigurationManager.ConnectionStrings[
"DefaultConnection"
].ConnectionString;
GridHeaderItem hItem = rgUnassnd.MasterTableView.GetItems(GridItemType.Header)[0]
as
GridHeaderItem;
if
(hItem !=
null
)
{
foreach
(GridDataItem item
in
rgUnassnd.MasterTableView.Items)
{
CheckBox ChkChange = item.FindControl(
"chkI"
)
as
CheckBox;
if
(ChkChange.Checked)
{
string
assidpk = item.GetDataKeyValue(
"assnmtIdPk"
).ToString();
using
(SqlConnection tasconn =
new
SqlConnection(tascnxn))
{
SqlCommand repAssnmtCmd =
new
SqlCommand(
"INSERT INTO repAssnmts (raCrtdBy, raCrtdDt, assnmtIdFk, repId) VALUES (LTRIM(RTRIM(@raCrtdBy)), LTRIM(RTRIM(@raCrtdDt)), LTRIM(RTRIM(@assnmtIdFk)), LTRIM(RTRIM(@repId)))"
, tasconn);
{
repAssnmtCmd.Parameters.AddWithValue(
"@assnmtIdFk"
, assidpk);
//need to get the id of the checked row
repAssnmtCmd.Parameters.AddWithValue(
"@raCrtdBy"
, HttpContext.Current.User.Identity.GetUserId());
repAssnmtCmd.Parameters.AddWithValue(
"@raCrtdDt"
, DateTime.Now.ToString());
repAssnmtCmd.Parameters.AddWithValue(
"@repId"
, userList.SelectedValue);
tasconn.Open();
repAssnmtCmd.ExecuteNonQuery();
}
SqlCommand assnmtStatCmd =
new
SqlCommand(
"INSERT INTO assnmtStats (asCrtdBy, asCrtdDt, assnmtIdFk, aStatId) VALUES (LTRIM(RTRIM(@asCrtdBy)), LTRIM(RTRIM(@asCrtdDt)), LTRIM(RTRIM(@assnmtIdFk)), LTRIM(RTRIM(@aStatId)))"
, tasconn);
{
assnmtStatCmd.Parameters.AddWithValue(
"@assnmtIdFk"
, assidpk);
//need to get the id of the checked row
assnmtStatCmd.Parameters.AddWithValue(
"@asCrtdBy"
, HttpContext.Current.User.Identity.GetUserId());
assnmtStatCmd.Parameters.AddWithValue(
"@asCrtdDt"
, DateTime.Now.ToString());
assnmtStatCmd.Parameters.AddWithValue(
"@aStatId"
, 2);
assnmtStatCmd.ExecuteNonQuery();
tasconn.Close();
if
(IsPostBack)
{
lblBtnAssignUsers.ForeColor = System.Drawing.ColorTranslator.FromHtml(
"#0AA10A"
);
lblBtnAssignUsers.Text =
"The file(s) were successfully assigned."
;
Response.Redirect(Request.RawUrl);
}
else
{
lblBtnAssignUsers.ForeColor = System.Drawing.ColorTranslator.FromHtml(
"#CA2823"
);
lblBtnAssignUsers.Text =
"The assignment(s) failed. Please try again."
;
}
}
}
}
}
}
}
Here's the CheckChanged code:
protected
void
chkH_CheckedChanged(
object
sender, EventArgs e)
{
foreach
(GridDataItem item
in
rgUnassnd.MasterTableView.Items)
{
CheckBox chkbx = (CheckBox)item[
"CheckTemp"
].FindControl(
"chkI"
);
chkbx.Checked = !chkbx.Checked;
}
}