使用FindByValue从查询中填充CheckBoxList

时间:2012-07-18 06:14:48

标签: c# asp.net checkboxlist

我有一个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等级保持为null,因此不会检查GradeLevelCheckboxList。 我错过了什么?

2 个答案:

答案 0 :(得分:0)

如果项目的listboxValue不同,请确保Text项的Value媒体资源具有正确的值。

此外,Value属性和grade_level_id完全相同,并且带有修剪空格。

答案 1 :(得分:0)

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

grades.DataBind();
在foreach循环之前