1

我有一个 asp.net chckebox 列表:

        <asp:EntityDataSource ID="GradeLevelEntityDataSource" runat="server" 
            ConnectionString="name=NewCourseRequestDataEntities" 
            DefaultContainerName="NewCourseRequestDataEntities" EnableFlattening="False" 
            EntitySetName="grade_levels" OrderBy="it.grade_level_index">
        </asp:EntityDataSource>
        <asp:CheckBoxList ID="GradeLevelCheckBoxList" runat="server" cssClass="horizontalcontrols"
            DataSourceID="GradeLevelEntityDataSource" 
            DataTextField="grade_level_description" DataValueField="grade_level_id" AutoPostBack="True"
            OnSelectedIndexChanged="CollegeInstitutionsListboxChange"
            RepeatDirection="Horizontal" RepeatLayout="Flow">
        </asp:CheckBoxList>

用户可以返回页面,获取记录 ID,提取记录数据,并应选中相应的复选框:

        CheckBoxList grades = (CheckBoxList)FindControl("GradeLevelCheckBoxList");
        foreach (request_grade_college r in CurrentRequest.request_grade_college)
            {
                ListItem grade = grades.Items.FindByValue(r.grade_level_id.ToString());
                    if (grade != null)
                      {
                          grade.Selected = true;
                      }
            }

代码 r.grade_level_id.ToString() 的部分确实返回了正确的 GUID,作为 String 类型。但是,ListItem 等级保持为空,因此没有检查任何 GradeLevelCheckboxList。请问我错过了什么?

4

2 回答 2

0

请确保listbox项目的Value属性具有正确的值,如果项目的TextValue不同。

此外,ValueProperty 和grade_level_id的大小写完全相同,并带有修剪的空格。

于 2012-07-18T06:55:56.317 回答
0

我认为当您尝试使用 Items.FindByValue() 访问数据时,数据尚未绑定,请尝试调用

grades.DataBind();

在 foreach 循环之前。

于 2012-07-18T07:30:27.493 回答