如何使用来自不同相关表的多个下拉列表填充ASPXC#表单

本文关键字:下拉列表 填充 表单 ASPXC# 何使用 | 更新日期: 2023-09-27 17:59:56

这是我第一次尝试为公司建立网站。我基本上有一个包含3个表的数据库。结构如下。

tblSiteDataEntryForm
ID
站点名称
网站类型
siteSubType

tblPrimaryTypes
ID
主要类型

tbl子类型
ID
PrimaryTypeID
子类型

员工将使用一个简单的表单在主表中创建一个新的DB条目。我正在处理这张表格。第二个表格将用于更新主表。在更新表单上,我有一个下拉列表,它使用主数据库上的选择查询来获取其值。然后,将根据主表中的行数据填充主类型和子类型的下拉列表。主类型下拉列表正在工作,但子类型不断抛出错误。"ddlSubType的SelectedValue无效,因为它不在项目列表中。参数名称:value"

这是我的密码。如有任何帮助,我们将不胜感激。


    using System;
    using System.Collections.Generic;
    using System.Configuration;
    using System.Data;
    using System.Data.SqlClient;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    public partial class ddef_update : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                LoadInfo();
            }
        }
        protected void LoadInfo()
        {
            SqlConnection connection;
            SqlCommand command;
            SqlDataAdapter adapter = new SqlDataAdapter();
            DataSet ds = new DataSet();
            int i = 0;
            string firstSql = null;
            string secondSql = null;
            string thirdSql = null;
            DataTable sites = new DataTable();
            DataTable types = new DataTable();
            DataTable subtypes = new DataTable();
            firstSql = "SELECT ID, siteName FROM tblSiteDataEntryForm";
            secondSql = "SELECT ID, PrimaryType FROM tblPrimaryTypes";
            thirdSql = "SELECT ID, SubType FROM tblSubTypes";
            connection = new SqlConnection(ConfigurationManager.ConnectionStrings["MyConsString"].ToString());

            {
                connection.Open();
                command = new SqlCommand(firstSql, connection);
                adapter.SelectCommand = command;
                adapter.Fill(sites);
                ddlSiteName.DataSource = sites;
                ddlSiteName.DataTextField = "siteName";
                ddlSiteName.DataValueField = "ID";
                ddlSiteName.DataBind();
                adapter.SelectCommand.CommandText = secondSql;
                adapter.Fill(types);
                ddlPrimaryType.DataSource = types;
                ddlPrimaryType.DataTextField = "PrimaryType";
                ddlPrimaryType.DataValueField = "ID";
                ddlPrimaryType.DataBind();
                adapter.SelectCommand.CommandText = thirdSql;
                adapter.Fill(subtypes);
                ddlSubType.DataSource = subtypes;
                ddlSubType.DataTextField = "SubType";
                ddlSubType.DataValueField = "ID";
                ddlSubType.DataBind();
                adapter.Dispose();
                command.Dispose();
                connection.Close();
            }
        }

        protected void ddlSiteName_SelectedIndexChanged(object sender, EventArgs e)
        {
            string selected = ddlSiteName.SelectedItem.Value;
            SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["MyConsString"].ToString());
            using (connection)
            {
                SqlCommand command = new SqlCommand("SELECT * FROM tblSiteDataEntryForm WHERE ID= @ID", connection);
                command.Parameters.AddWithValue("@ID", selected);
                command.CommandType = CommandType.Text;
                connection.Open();
                SqlDataReader reader = command.ExecuteReader();
                using (reader)
                {
                    if (reader.HasRows)
                    {
                        reader.Read();
                        ddlPrimaryType.Text = reader["siteType"].ToString();
                        ddlSubType.Text = reader["siteSubType"].ToString();

                    }
                }
            }
        }
    }

如何使用来自不同相关表的多个下拉列表填充ASPXC#表单

我解决了这个问题。Primary表中的siteSubType包含一个文本值。将其更改为integer,所有工作