Я уже один день ломаю голову над этим.
Но я просто не вижу этого.
У меня есть флажок с именем cblRounds, который
<asp:CheckBoxList ID="cblRondes" runat="server">
</asp:CheckBoxList>
Также отметим, что EnableViewstate имеет значение true.
В моем коде позади, в page_Load я заполняю список следующим образом:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
dpPrintRounds.FieldValue = DateTime.Now.AddDays(1);
}
FillCheckBoxList();
}
private void FillCheckBoxList()
{
tourCollectie = new LogisticsTourCollection();
RelationCollection rc = new RelationCollection(LogisticsItemEntity.Relations.LogisticsItemSpecsEntityUsingSeqSpecs);
rc.Add(LogisticsItemSpecsEntity.Relations.LocationEntityUsingSeqLocationDelivery);
rc.Add(LocationEntity.Relations.LocationLogisticsTourEntityUsingSeqLocation);
rc.Add(LocationLogisticsTourEntity.Relations.LogisticsTourEntityUsingSeqLogisticsTour);
PredicateExpression pe = new PredicateExpression(LogisticsItemSpecsFields.RequiredDeliveryDate == dpPrintRounds.FieldValue);
pe.Add(LogisticsItemFields.DeliveryNumber != DBNull.Value);
tourCollectie.GetMulti(pe, rc);
cblRondes.Items.Clear();
foreach (LogisticsTourEntity tour in tourCollectie)
{
cblRondes.Items.Add(new ListItem(tour.Name, tour.SeqLogisticsTour.ToString()));
}
}
Затем я нажимаю кнопку, где проверяю контрольное состояние флажков
protected void btnPrintHeaders_Click(object sender, EventArgs e)
{
PrintRounds();
}
private void PrintRounds()
{
if (dpPrintRounds.Date_Selected.HasValue)
{
Dictionary<string, string> rondes = new Dictionary<string, string>();
foreach (ListItem item in cblRounds.Items)
{
if (item.Selected)
{
rondes.Add(item.Value, GetDeliveryNumberFromRonde(item.Value));
}
}
}
}
Все работает правильно, за исключением того, что if (item.Selected) всегда возвращает false.
Также у меня есть
<td>
<rm:DatePicker ID="dpPrintRounds" runat="server" />
</td>
<td>
<asp:Button ID="btnSearch" runat="server" Visible="true"
onclick="btnSearch_Click" />
<%--<asp:Literal ID="litLogisticsRoundName" runat="server" />:--%>
</td>
Datepicker возвращает дату, которую я использую для фильтрации своей коллекции.
Поэтому, когда я нажимаю кнопку поиска, я получаю «новые» флажки в своем списке.
Вот почему я не имею Fillcheckboxlist внутри if (! IsPostBack), иначе я не получаю флажки при новом поиске.
Я искал ответ на этот вопрос и пробовал несколько вещей, но ни одна из них, похоже, не работает.
Любые идеи приветствуются.