Skip to main content
 首页 » 编程设计

c#之从列表集合中填充下拉列表 c#/asp.net

2024年02月20日35hnrainll

我有一个名为 memberdetails 和 memberdb 的类,它们是我的类库的一部分。我正在使用带有 MSSQL 作为后端的 asp.net C#

我的成员(member)详情类

     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; 
        } 

成员数据库类

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 并将其添加为对我的项目的引用后,我尝试绑定(bind)我的 DropDownlist 以检索这些值。在代码隐藏页面中,我从 gridview 中获取一个值,将其放入变量“memgen”中,将其发送到我的方法,然后返回结果。当我调试我的应用程序时,我看到返回了值,但是它们没有绑定(bind)到 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(); 

请您参考如下方法:

您的代码隐藏需要更改为如下所示:

List<MemberDetails> details = member.MemberResult(memgen);  
 
ddlFamilyMembers.DataTextField = "FirstName";  
ddlFamilyMembers.DataValueField = "MemID";   
ddlFamilyMembers.DataSource = details; 
ddlFamilyMembers.DataBind();  

具体变化:

  1. 捕获MemberResult的结果
  2. 为 DataTextField 和 DataValueField 使用正确的字段名称>
  3. 设置数据源属性