【问题标题】:Bring data into DropDownList from SQL in ASP.NET / C#?将数据从 ASP.NET/C# 中的 SQL 带入 DropDownList?
【发布时间】:2017-12-15 18:08:08
【问题描述】:

您好,我是 C# 的新手,但我的技能非常不足,我希望将 SQL 表中的数据带入表中的“asp:DropDownList”。

我收到此错误:System.NullReferenceException:对象引用未设置为对象的实例

前端html是这样的:

<asp:Table ID="Table1" runat="server" Font-Size="Medium" Width="960" BorderWidth="3" CellPadding="5" CellSpacing="5" CssClass="table table-bordered table-striped table-hover table-condensed table-responsive">
        <asp:TableHeaderRow runat="server" Font-Bold="true">
            <asp:TableHeaderCell Width="20%">Activity</asp:TableHeaderCell>
            <asp:TableHeaderCell>Hazards</asp:TableHeaderCell>
            <asp:TableHeaderCell Width="15%">Risk Level</asp:TableHeaderCell>
        </asp:TableHeaderRow>
        <asp:TableRow ID="TableRow1" runat="server" >
            <asp:TableCell>Camping</asp:TableCell>
            <asp:TableCell>Emergency evacuation</asp:TableCell>
            <asp:TableCell><asp:DropDownList ID="ddl1" runat="server"></asp:DropDownList></asp:TableCell>
        </asp:TableRow>
    </asp:Table>
        </div>

我简要介绍的 C# 代码是这样的:

    public partial class _Default : Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!string.IsNullOrEmpty((string)Session["TripCode"]))
        {
            txtTripCode.Text = (string)Session["TripCode"];
        }
        else
        {
            txtTripCode.Text = "NOT PROVIDED";
        }

        if (!string.IsNullOrEmpty((string)Session["TripOrg"]))
        {
            txtTripOrg.Text = (string)Session["TripOrg"];
        }
        else
        {
            txtTripOrg.Text = "ERROR: NO DATA PROVIDED";
        }

        if (!string.IsNullOrEmpty((string)Session["TripDesc"]))
        {
            txtTripDesc.Text = (string)Session["TripDesc"];
        }
        else
        {
            txtTripDesc.Text = "ERROR: NO DATA PROVIDED";
        }

        if (!this.IsPostBack)
        {
            string constr = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
            using (SqlConnection con = new SqlConnection(constr))
            {
                using (SqlCommand cmd = new SqlCommand("SELECT TOP 1000 [MainActivityID],[ID],[Activity],[Hazards],[Risk_Level],[Controls] FROM [STRIDES_SQL].[dbo].[STRIDES_RA_Activities]"))
                {
                    cmd.CommandType = CommandType.Text;
                    cmd.Connection = con;
                    con.Open();
                    ddl1.DataSource = cmd.ExecuteReader();
                    ddl1.DataTextField = "Name";
                    ddl1.DataValueField = "MainActivityID";
                    ddl1.DataBind();
                    con.Close();
                }
            }
            ddl1.Items.Insert(0, new ListItem("--Select Customer--", "0"));
        }
    }

有没有办法阻止这种情况发生?

感谢您的帮助或理解,提前感谢任何捡到这个的人!

【问题讨论】:

  • 你从哪里得到异常,#行?
  • @ashin 这是行字符串 constr = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
  • 检查您的 app.config/web.config 以确保存在名为“constr”的连接字符串
  • 我希望这只是某种原型,因为在一个长期存在的产品中,您的代码隐藏中不应该有 SQL。这应该在较低级别的轮胎中。

标签: c# sql asp.net visual-studio


【解决方案1】:

检查您的 web.config 以查看 Configuration --> ConnectionStrings 部分中的 constr。如果不存在,请添加连接字符串。

检查 https://www.connectionstrings.com/ 语法正确。

还有,行

ddl1.DataTextField = "Name";

会给你下一个错误。名称字段不是您的查询的一部分。

【讨论】:

  • 感谢您,尽管我之前已设置过,但由于某种原因,web.cofig 中的数据有误。感谢您的帮助
猜你喜欢
  • 2019-12-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-06
  • 1970-01-01
相关资源
最近更新 更多