繁体   English   中英

如何在asp.net的下拉列表中从数据库中绑定选定的值

[英]How to bind selected value from database in dropdownlist in asp.net

我正在尝试从下拉列表中的数据库中绑定选定的项目。 我没有在下拉列表中获取用户选择的数据,而是加载所有内容。 我需要的是从数据库中选择一个默认值以及其他项目。 请帮助我克服这个问题。 提前谢谢你。

存储过程:

CREATE PROCEDURE [dbo].[get_student_details]
  @StudentId int = 0
AS
BEGIN
    SET NOCOUNT ON;

    SELECT      
        dbo.Student.InstituteId, 
        dbo.Student.Institute,
        dbo.Student.Name, 
        dbo.Student.Gender,
        dbo.Student.Age
    FROM         
        dbo.Student 
    WHERE       
        dbo.Student.StudentId = @StudentId
END             

我的 .aspx 标记:

<asp:DropDownList ID="ddlInstitute" runat="server"></asp:DropDownList>
<asp:TextBox ID="txtName" runat="server"></asp:TextBox>
<asp:TextBox ID="txtGender" runat="server"></asp:TextBox>
<asp:TextBox ID="txtAge" runat="server"></asp:TextBox>
<asp:Button ID="btnPersonalDetails" runat="server"  Text="Search" OnClick="GetStudentDetails"/>

我背后的代码:

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        FillInstitute();
    }                   
}

public void FillInstitute()
{
    SqlConnection con = new SqlConnection(constr);
    SqlCommand cmd = new SqlCommand();
    cmd.CommandType = CommandType.StoredProcedure;
    cmd.CommandText = "get_Institute";
    cmd.Connection = con;

    try
    {
        con.Open();
        ddlInstitute.DataSource = cmd.ExecuteReader();
        ddlInstitute.DataTextField = "Institute";
        ddlInstitute.DataValueField = "InstituteId";
        ddlInstitute.DataBind();
        ddlInstitute.Items.Insert(0, new ListItem("--Select--", "0"));
    }
    catch (Exception ex)
    {
        throw ex;
    }
    finally
    {
        con.Close();
        con.Dispose();
    }
}

public void GetStudentDetails()
{
    studentid= 123;
    SqlConnection con = new SqlConnection(constr);
    SqlCommand cmd = new SqlCommand();
    cmd.CommandType = CommandType.StoredProcedure;
    cmd.CommandText = "get_student_details";
    cmd.Parameters.Add("@StudentId", SqlDbType.Int).Value = studentid;
    cmd.Connection = con;

    try
    {
        con.Open();
        SqlDataReader dr = cmd.ExecuteReader();

        if (dr.Read())
        {
            ddlInstitute.DataValueField= dr["InstituteId"].ToString();
            ddlInstitute.DataTextField= dr["Institute"].ToString();
            txtName.Text = dr["Name"].ToString();
            txtGender.Text = dr["Gender"].ToString();
            txtAge.Text = dr["Age"].ToString();
        }
    }
    catch (Exception ex)
    {
        throw ex;
    }
    finally
    {
        con.Close();
        con.Dispose();
    }
}

您必须使用DropDownList SelectedValue属性。 DataTextFieldDataValueField用于指定DataSource哪些属性应用作下拉列表的TextValue

替换这些行:

ddlInstitute.DataValueField= dr["InstituteId"].ToString();
ddlInstitute.DataTextField= dr["Institute"].ToString();

和:

ddlInstitute.SelectedValue= dr["InstituteId"].ToString();

或者你也可以这样做:

ddlInstitute.Items.FindByValue(dr["InstituteId"].ToString()).Selected = true;

你也可以参考这篇文章

假设您知道要选择哪个 ID,请尝试以下操作:

ddlInstitute.Items.FindByValue(dr["InstituteId"].ToString()).Selected = true;

尝试将其作为函数:

void FN_loadBranch()
{
    classname cls = new classname ();

    DataTable dt = new DataTable();
    dt = cls.FUNCTIONNAMEINCLASS(int id);

    dropdown.DataSource = dt;
    dropdown.DataValueField = "valuefield";
    dropdown.DataTextField = "textfield";
    dropdown.DataBind();

    ddlBranch.Items.Insert(0, new ListItem("--Select--", "0"));
}

在功能上:

public DataTable FUNCTIONNAMEINCLASS( int id)
{  
    try    
    {
        using (SqlConnection cn = new SqlConnection(CLASS.ConnectionString))
        {
            SqlCommand cmd = new SqlCommand("[storedprocedure]", cn);

            cn.Open();
            cmd.CommandType = CommandType.StoredProcedure;     

            cmd.Parameters.Add("@ID", SqlDbType.VarChar, 50).Value = id;

            SqlDataAdapter sda = new SqlDataAdapter(cmd);
            DataTable dt = new DataTable();

            sda.Fill(dt);
            return dt;
        }
    }
}

在函数中使用存储过程

暂无
暂无

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

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