Osher Levy
Osher Levy

Reputation: 83

Update multiple checked rows in DataList C#

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

Answers (2)

Osher Levy
Osher Levy

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

VDWWD
VDWWD

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

Related Questions