Я пытаюсь выбрать элементы Checkboxlist из значений Datatable на page_load. Но следующий код, похоже, не работает. Я что-то не так делаю?
.aspx page
<asp:CheckBoxList ID="CheckBoxList2" runat="server" DataSourceID="SqlDataSource1" DataTextField="p_name" DataValueField="p_id" RepeatColumns="5" RepeatDirection="Horizontal">
</asp:CheckBoxList>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:TestConnectionString %>"
SelectCommand=" select [p_id], [p_name] from [TABLE_A]"></asp:SqlDataSource>
Код:
if (!IsPostBack)
{
int l_id = this.Request.QueryString["l_id"].ToString();
DataTable dt = controller.RetrieveData(l_id);
List<string> selectedValues = CheckBoxList2.Items.Cast<ListItem>()
.Select(li => li.Value)
.ToList();
foreach (DataRow dr in dt.Rows)
{
if (selectedValues.Contains(dr["p_id"].ToString()))
CheckBoxList2.Items.FindByValue(dr["p_id"].ToString()).Selected = true;
}
}