更新DataList中的多个已检查行C#

时间:2017-01-25 21:44:20

标签: c# asp.net checkbox datalist

我试图更新DataList中的多个已检查行。

  

我的aspx页面:

hiddenimports=["Tkinter", "FileDialog"],
  

我的代码背后:

<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>

if(cbCheckedRep.Checked)始终为FALSE。

感谢。

2 个答案:

答案 0 :(得分:1)

cbCheckedRep.Checked始终为false,因为cbCheckedRep本身始终为null。您的代码永远不会达到if (cbCheckedRep.Checked)。这是因为您在寻找HtmlInputCheckBox时正试图找到CheckBox。所以改变

HtmlInputCheckBox cbCheckedRep = objitem.FindControl("cbCheckedRep") as HtmlInputCheckBox;

CheckBox cbCheckedRep = objitem.FindControl("cbCheckedRep") as CheckBox;

如果您要使用普通输入标记而不是像HtmlInputCheckBox这样的控件,则使用<input type="checkbox" id="cbCheckedRep" runat="server" />

答案 1 :(得分:1)

解决!

我必须添加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!");
        }
    }
}