Reputation: 83
I'm trying to update multiple checked rows in DataList.
My aspx page:
<asp:DataList ID="DLSearchResultsReps" runat="server" RepeatLayout="Flow" RepeatDirection="Horizontal" ClientIDMode="Static">
<ItemTemplate>
<tr class="<%# DateTime.Parse(Eval("Date").ToString()) < DateTime.Today.AddDays(-GlobalFunctions.RepsLongTime) ? "red lighten-4" : " " %>">
<td width="15%"><%# Eval("RepId") %></td>
<td width="10%" class="red-text"><b><%# Eval("Envelop") %></b></td>
<td width="15%"><%# Eval("Date") %></td>
<td width="20%"><%# Eval("CustomerFirst") %> <%# Eval("CustomerLast") %></td>
<td width="20%"><%# Eval("Product") %></td>
<td width="15%"><%# Eval("Status") %></td>
<td width="5%">
<asp:CheckBox ID="cbCheckedRep" runat="server" DataKeyField ='<%# Eval("RepId") %>' />
<input type="hidden" id="HiddenRepId" value="<%# Eval("RepId") %>" />
</td>
</tr>
</ItemTemplate>
</asp:DataList>
My code behind:
protected void UpdateMultiple_Click(object sender, EventArgs e)
{
foreach (DataListItem objitem in DLSearchResultsReps.Items)
{
HtmlInputCheckBox cbCheckedRep = objitem.FindControl("cbCheckedRep") as HtmlInputCheckBox;
if (cbCheckedRep != null)
{
if (cbCheckedRep.Checked == true)
{
HiddenField hd = (HiddenField)objitem.FindControl("HiddenRepId");
GlobalFunctions.ChangeRepStatus(hd.Value, int.Parse(dlStatus.SelectedValue));
}
}
}
}
if (cbCheckedRep.Checked) is always FALSE.
Thanks.
Upvotes: 0
Views: 278
Reputation: 83
Solved!
All I had to add if (!IsPostBack)
if (!IsPostBack)
{
try
{
DLSearchResultsReps.DataSource = GlobalFunctions.GetRepsum(Session["branchid"].ToString(), 100, status.ToString(), producer);
DLSearchResultsReps.DataBind();
if (DLSearchResultsReps.Items.Count > 0) // Any Results?
{
SearchResultsRepsPanel.Visible = true;
}
}
catch
{
Response.Redirect("error.aspx?msg=ERROR!");
}
}
}
Upvotes: 1
Reputation: 35554
cbCheckedRep.Checked
is always false
because cbCheckedRep
itself is always null
. Your code never reaches if (cbCheckedRep.Checked)
. That is because you are trying to find a HtmlInputCheckBox
while you should be looking for a CheckBox
. So change
HtmlInputCheckBox cbCheckedRep = objitem.FindControl("cbCheckedRep") as HtmlInputCheckBox;
into
CheckBox cbCheckedRep = objitem.FindControl("cbCheckedRep") as CheckBox;
You use HtmlInputCheckBox
if you were to use a normal input tag instead of a Control like this <input type="checkbox" id="cbCheckedRep" runat="server" />
.
Upvotes: 1