【问题标题】:populate CheckBoxList from query using FindByValue使用 FindByValue 从查询中填充 CheckBoxList
【发布时间】:2012-10-15 17:08:01
【问题描述】:

我有一个 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。 请问我错过了什么?

【问题讨论】:

  • 你能告诉我们你绑定它的代码吗?
  • @user 您在哪个事件中放置了 foreach 循环?

标签: c# asp.net checkboxlist


【解决方案1】:

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

grades.DataBind();

在 foreach 循环之前。

【讨论】:

  • grades.DataBind() 是解决方案。谢谢!
【解决方案2】:

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

另外,Value 属性和grade_level_id 的大小写完全相同,并带有修剪的空格。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-11-30
    • 2011-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-06
    相关资源
    最近更新 更多