c# - 根据下拉选择将 ID 保存到数据库

标签 c# asp.net drop-down-menu

我使用以下代码将 BusinessID 绑定(bind)为 ddlIndustry 下拉列表的 DataValueField。我想要做的是将选定的 ID 保存到不同的表(公司)。我正在使用 ddlIndustry.SelectedValue 执行此操作。由于某种原因,第一个值总是被保存 (1),而不是选定的值。对于为什么会发生这种情况,您有什么想法吗?

protected void Page_Load(object sender, EventArgs e)
{

    if (!Page.IsPostBack)
        BindCountry();
        BindIndustry();
}

private void BindCountry()
{
    XmlDocument doc = new XmlDocument();
    doc.Load(Server.MapPath("countries.xml"));

    foreach (XmlNode node in doc.SelectNodes("//country"))
    {
        ddlCountry.Items.Add(new ListItem(node.InnerText, node.Attributes["code"].InnerText));
        ddlCountry.SelectedIndex = 94;
    }
}

private void BindIndustry()
{
    SqlCommand cmd = null;

    SqlConnection conn = new SqlConnection(GetConnectionString());
    conn.Open();

    cmd = new SqlCommand("Select Industry, BusinessID FROM BusinessType", conn);

    cmd.CommandType = CommandType.Text;

    SqlDataAdapter da = new SqlDataAdapter(cmd);

    DataSet ds = new DataSet();

    da.Fill(ds);

    conn.Close();

    ddlIndustry.DataSource = ds;
    ddlIndustry.DataTextField = "Industry";
    ddlIndustry.DataValueField = "BusinessID";
    ddlIndustry.DataBind();

    //ddlIndustry.Items.Insert(0, new System.Web.UI.WebControls.ListItem("-- Please Select Industry --", "0"));

}

private void ExecuteCompanyDetailsInsert()
{

    SqlConnection conn = new SqlConnection(GetConnectionString());



    string sql = "INSERT INTO Company (BusinessID, CompanyName, Email, AddressLine1, AddressLine2, Location, Telephone) VALUES "
                + " (@BusinessID, @CompanyName, @Email, @AddressLine1, @AddressLine2, @Location, @Telephone)";

    try
    {

        conn.Open();
        SqlCommand cmd = new SqlCommand(sql, conn);
        SqlParameter[] param = new SqlParameter[7];

        param[0] = new SqlParameter("@BusinessID", SqlDbType.Int);
        param[1] = new SqlParameter("@CompanyName", SqlDbType.VarChar, 50);
        param[2] = new SqlParameter("@Email", SqlDbType.VarChar, 50);
        param[3] = new SqlParameter("@AddressLine1", SqlDbType.VarChar, 50);
        param[4] = new SqlParameter("@AddressLine2", SqlDbType.VarChar, 50);
        param[5] = new SqlParameter("@Location", SqlDbType.VarChar, 50);
        param[6] = new SqlParameter("@Telephone", SqlDbType.VarChar, 50);

        param[0].Value = ddlIndustry.SelectedValue;
        param[1].Value = company_name.Text;
        param[2].Value = company_email.Text;
        param[3].Value = address_line_1.Text;
        param[4].Value = address_line_2.Text;
        param[5].Value = ddlCountry.SelectedItem.Text;
        param[6].Value = telephone.Text;

        for (int i = 0; i < param.Length; i++)
        {
            cmd.Parameters.Add(param[i]);
        }

        cmd.CommandType = CommandType.Text;
        cmd.ExecuteNonQuery();

    }

    catch (System.Data.SqlClient.SqlException ex)
    {

        string msg = "Insert Error:";
        msg += ex.Message;
        throw new Exception(msg);
    }

    finally
    {
        conn.Close();
    }

}

最佳答案

首先修改这段代码,因为当你的页面回发到服务器时,你的industry dropdown再次绑定(bind),你的selected value丢失了

if (!Page.IsPostBack)
{
    BindCountry();
    BindIndustry();
}

然后你可以得到选择的值

ddlIndustry.SelectedValue

关于c# - 根据下拉选择将 ID 保存到数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5058492/

相关文章:

c# - 如何使用 YouTube Api 下载 YouTube 视频

asp.net - ASP.NET编译和回收后出现“无法加载App_Web _ *。dll”异常

javascript - 隐藏在javascript slider 后面的下拉菜单

css - 为什么我的基于 CSS 的下拉菜单在 IE9 中不起作用?

c# - 如何在自定义 Xamarin.Forms ViewCell 的行之间添加分隔符?

c# - linq 不会遍历列表

c# - 使用 IsNullOrEmpty 检查构建 Linq 语句

c# - 我应该如何设计我的对象模型以便我的 DAL 可以填充只读字段?

asp.net - ASP 表重叠到下一列

jquery - 选择的harvethq动态调整宽度