0

我正在尝试从 page_load 上的数据表值中选择 Checkboxlist 项。但是下面的代码似乎不起作用。难道我做错了什么?

.aspx 页面

  <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;
        }
    } 
4

1 回答 1

0

似乎在绑定 CheckBoxList 项目之前调用了 Page_Load 事件,这就是未选择项目的原因。

尝试在您的 checkBoxList 中添加一个 DataBound 事件以选择您需要的项目。

于 2020-03-24T15:50:18.350 回答