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() の部分は、String 型として正しい GUID を返します。ただし、ListItem の成績は null のままであるため、GradeLevelCheckboxList はどれもチェックされません。何が欠けていますか?

4

2 に答える 2

0

Items.FindByValue() を使ってアクセスしようとすると、まだデータがバインドされていないと思うので、呼び出してみてください

grades.DataBind();

foreach ループの前。

于 2012-07-18T07:30:27.493 に答える
0

アイテムのとが異なる場合は、listboxアイテムのValueプロパティが正しい値であることを確認してください。TextValue

また、ValueProperty とgrade_level_idは、大文字と小文字がまったく同じで、スペースがトリミングされています。

于 2012-07-18T06:55:56.317 に答える