简体   繁体   English

从List集合c#/ asp.net填充Dropdownlist

[英]Populating Dropdownlist from List collection c#/asp.net

I have a class named memberdetails and memberdb which are part of my class library. 我有一个名为memberdetails和memberdb的类,它们是我的类库的一部分。 I am using asp.net C# with MSSQL as the back end 我使用asp.net C#和MSSQL作为后端

My memberdetails class 我的成员详细介绍了

     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 class 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();
            }
        }
    }

After I compile those classes into a DLL and then add it as a reference to my project I am trying to bind my DropDownlist to retrieve those values. 在将这些类编译成DLL然后将其添加为对项目的引用之后,我尝试绑定我的DropDownlist以检索这些值。 In the codebehind page I am getting a value from the gridview putting it into a variable "memgen" sending that to my method and then returning the results. 在代码隐藏页面中,我从gridview获取一个值,将其放入变量“memgen”,将其发送到我的方法然后返回结果。 When I debug my application I see the values are returned however they are not binded to the DropDownList. 当我调试我的应用程序时,我看到返回的值,但它们没有绑定到DropDownList。

CodeBehind Page CodeBehind Page

 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();

Your code-behind needs to change to be something like this: 您的代码隐藏需要更改为以下内容:

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

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

The specific changes: 具体变化:

  1. Capture the result of MemberResult 捕获MemberResult的结果
  2. Use the correct field names for DataTextField and DataValueField DataTextFieldDataValueField使用正确的字段名称
  3. Set the DataSource property 设置DataSource属性

I think the problem is that you forgot to add the datasource of the dropdownlist. 我认为问题是您忘记添加下拉列表的数据源。

You can do as shown below : 你可以这样做,如下所示:

var ddlvals = member.MemberResult(memgen); 

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

Without binding that won't work. 没有绑定,将无法正常工作。 I hope this helps your issue. 我希望这有助于你的问题。

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

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM