0

1 つ以上の特定のチェックボックス リスト項目が選択されている場合に、リスト ボックスを表示するための正しいコード ビハインドを見つけようとしています。チェックボックス リストはエンティティ データ ソースから作成され、そのソースの SQL テーブルには、その選択がリストボックスを表示するかどうかを示すフィールドもあります。うわー!テーブルは次のようになります。

GUID grade_level show_college_list
(gen)    12           0 (bit)
(gen)  College        1

asp は次のようなものです。

        <asp:EntityDataSource ID="GradeLevelEntityDataSource" runat="server" 
            ConnectionString="name=NewCourseRequestDataEntities" 
            DefaultContainerName="NewCourseRequestDataEntities" EnableFlattening="False" 
            EntitySetName="grade_levels" OrderBy="it.grade_level_description">
        </asp:EntityDataSource>
        <asp:Label ID="Label7" cssClass="leftlabel" runat="server" text="Grade Level (check all that apply):"></asp:Label>
        <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>

College がチェックされている場合、Institutions リストボックス パネルを表示する必要があります。これは私がコードをどこまでやったかです:

       if (sender != null)
            {
                foreach (ListItem grade in GradeLevelCheckBoxList.Items)
                {
                    if (grade.Selected == true)
                    {
                        NewCourseRequestDataEntities context = new NewCourseRequestDataEntities();
                        var guids = from g in context.grade_levels where g.show_college_list == true select g;

                        if ( guids.Contains(new Guid(grade.Value)) )
                        {
                            testselected.Text = grade.Value; //for testing
                            CollegeInstitutionsSelectPanel.Visible = true;
                        }
                    }
                }
            }         

contains メソッドでこれら 2 つのエラーを受け取りました。彼らが何を意味するのかわかりません。

エラー 1 インスタンス引数: 'System.Linq.IQueryable' から 'System.Linq.ParallelQuery' に変換できません Y:\visual studio\New Course Request\NewCourseRequestForm.aspx.cs 146 34 新しいコース リクエスト

エラー 2 'System.Linq.IQueryable' には 'Contains' の定義が含まれておらず、最適な拡張メソッド オーバーロード 'System.Linq.ParallelEnumerable.Contains(System.Linq.ParallelQuery, TSource)' には無効な引数がいくつかあります Y:\visual studio\新しいコース リクエスト\NewCourseRequestForm.aspx.cs 146 34 新しいコース リクエスト

誰でも助けてもらえますか?

4

3 に答える 3

0

それを見つけた -

     NewCourseRequestDataEntities context = new NewCourseRequestDataEntities();
     var guids = (from g in context.grade_levels where g.show_college_list == true select g**.grade_level_id**).ToList();

                        bool contains = guids.Contains(new Guid(grade.Value));
                        if (contains)
                        {
                            CollegeInstitutionsSelectPanel.Visible = true;
                        }
                        else
                        {
                            CollegeInstitutionsSelectPanel.Visible = false;
                        }

テーブルで Guid フィールドを指定していませんでした。' select g ' は '*select g.grade_level_id*' (Guid フィールド) を持つべきでした。ToListが必要かどうかわからない...

于 2012-06-21T22:41:33.067 に答える
0

これでうまくいくはずです( .Where(...) answer へのわずかな変更):

foo.Visible = guids.Any(x=>x==new Guid(grade.Value)

于 2012-06-21T22:44:33.360 に答える
0

試してください(Error2の場合-Error1がどこから来ているのかわかりません...):

if(guids.Where(x=>x==new Guid(grade.Value)).FirstOrDefault()!=null)
{
     //etc
}
于 2012-06-21T21:18:27.580 に答える