1

クラス ライブラリの一部である memberdetails および memberdb という名前のクラスがあります。バックエンドとしてMSSQLでasp.net C#を使用しています

私のメンバー詳細クラス

     public int MemID
     {
        get { return memID; }      
     }

     public string FirstName
    {
        get { return firstName; }
        set { firstName = value; }
    }

     public MemberDetails(int memID, string firstName)
        {
        this.memID = memID;
        this.firstName = firstName;
        }

memberdb クラス

public List<MemberDetails> MemberResult(int memid)
    {  
        using (SqlConnection con = new SqlConnection(connectionString))         
        using (SqlCommand cmd = con.CreateCommand())
        {
            List<MemberDetails> memberdetails = new List<MemberDetails>();
            MemberDetails member;

            try
            {
                con.Open();
                cmd.CommandText = "usp_Member_Result";
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.AddWithValue("@memgen", memid);

                using (SqlDataReader reader = cmd.ExecuteReader())
                {
                    while (reader.Read())
                    {
                        member = new MemberDetails((int)reader["memid"],  (string)reader["firstname"]);
                        memberdetails.Add(member);

                    }
                    reader.Close();
                    return memberdetails;                          
                 }
            }
            catch (SqlException err)
            {
                throw new ApplicationException("Data error.", err);
            }
            finally
            {            
                if (con != null)
                    con.Close();
            }
        }
    }

これらのクラスを DLL にコンパイルし、プロジェクトへの参照として追加した後、DropDownlist をバインドしてそれらの値を取得しようとしています。コードビハインド ページでは、グリッドビューから値を取得して変数「memgen」に入れ、それをメソッドに送信してから結果を返しています。アプリケーションをデバッグすると、値が返されますが、DropDownList にバインドされていません。

コードビハインド ページ

 member.MemberResult(memgen);
   // MemberDetails details = new MemberDetails();

    ddlFamilyMembers.DataTextField = "Text";
    ddlFamilyMembers.DataValueField = "Value"; 
  //  ddlFamilyMembers.DataSource = memberdetails; << "This does not exist in the current context"
    ddlFamilyMembers.DataBind();
4

3 に答える 3

4

コード ビハインドを次のように変更する必要があります。

List<MemberDetails> details = member.MemberResult(memgen); 

ddlFamilyMembers.DataTextField = "FirstName"; 
ddlFamilyMembers.DataValueField = "MemID";  
ddlFamilyMembers.DataSource = details;
ddlFamilyMembers.DataBind(); 

具体的な変更点:

  1. の結果をキャプチャMemberResult
  2. とには正しいフィールド名を使用してDataTextFieldくださいDataValueField
  3. DataSourceプロパティを設定する
于 2012-09-24T14:11:05.210 に答える
0
List<MemberDetails> details = member.MemberResult(memgen); 

ddlFamilyMembers.DataTextField = "FirstName"; 
ddlFamilyMembers.DataValueField = "MemID";  
ddlFamilyMembers.DataSource = details;
ddlFamilyMembers.DataBind(); 
于 2013-04-10T07:09:08.260 に答える
0

問題は、ドロップダウンリストのデータソースを追加するのを忘れたことだと思います。

以下に示すように行うことができます:

var ddlvals = member.MemberResult(memgen); 

ddlFamilyMembers.DataTextField = "FirstName"; 
ddlFamilyMembers.DataValueField = "MemID";  
ddlFamilyMembers.DataSource = ddlvals;
ddlFamilyMembers.DataBind();

バインドがないと機能しません。これがあなたの問題に役立つことを願っています。

于 2012-09-24T14:19:03.497 に答える