绑定下拉列表未填充(无错误)

本文关键字:无错误 填充 下拉列表 绑定 | 更新日期: 2023-09-27 18:05:09

我的数据绑定下拉列表没有填充,我在这里查看了其他线程,它们似乎没有帮助。我没有得到任何错误或任何东西,我的网页加载只是找到。其他数据库实现工作正常。一定是我漏掉了什么简单的东西。我还实现了if(!IsPostBack){ddlBatchCodeBind();与页面加载,也没有做任何事情。

 public void ddlBatchCodeDelBind()
 {
    using (SqlConnection conn = new SqlConnection(GetConnectionString()))
    {
         try
         {
            SqlDataAdapter ada = new SqlDataAdapter("SELECT BatchCode, BatchCodeDesc FROM BatchTable", conn);
            DataTable batch_codes = new DataTable();
            ada.Fill(batch_codes);
            ddlBatchCodeDel.DataSource = batch_codes;
            ddlBatchCodeDel.DataTextField = "BatchCodeDesc";
            ddlBatchCodeDel.DataValueField = "BatchCode";
            ddlBatchCodeDel.DataBind();
         }
         catch(SqlException ex)
         {
            MessageBox.Show(ex.Message);
         }
         finally
         {
                conn.Close();
         }
   }
 }

<asp:DropDownList ID="ddlBatchCodeDe" runat="server" AppendDataBoundItems="true"><asp:ListItem Text=Select item to Delete" Value="0"> </asp:ListItem></asp:DropDownList>

绑定下拉列表未填充(无错误)

这里有一种不用SqlDataAdapter就可以绑定到数据表的方法

using (SqlConnection conn = new SqlConnection(GetConnectionString()))
using (SqlCommand cmd = new SqlCommand("SELECT BatchCode, BatchCodeDesc FROM BatchTable", conn))
{
    try
    {
        conn.Open();
        DataTable batch_codes = new DataTable();
        batch_codes.Load(cmd.ExecuteReader());
        ddlBatchCodeDel.DataSource = batch_codes;
        ddlBatchCodeDel.DataTextField = "BatchCodeDesc";
        ddlBatchCodeDel.DataValueField = "BatchCode";
        ddlBatchCodeDel.DataBind();
    }
    catch (Exception ex)
    {
        Response.Write(ex.Message);
    }
}

当我测试它的时候。假设下拉菜单的格式正确

<asp:DropDownList ID="ddlBatchCodeDel" runat="server" AppendDataBoundItems="true"></asp:DropDownList>

使用using时不需要finally。它将为您关闭并解除连接。但是最好将SqlDataAdapter也包装在using中,因为它使用了IDisposable接口。

            using (SqlConnection conn = new SqlConnection(GetConnectionString()))
            using (SqlDataAdapter ada = new SqlDataAdapter("SELECT BatchCode, BatchCodeDesc FROM BatchTable", conn))
            {
                try
                {
                    DataTable batch_codes = new DataTable();
                    ada.Fill(batch_codes);
                    ddlBatchCodeDel.DataSource = batch_codes;
                    ddlBatchCodeDel.DataTextField = "BatchCodeDesc";
                    ddlBatchCodeDel.DataValueField = "BatchCode";
                    ddlBatchCodeDel.DataBind();
                }
                catch (Exception ex)
                {
                    //MessageBox.Show(ex.Message);
                }
            }

我很确定MessageBox.Show是一个WinForms的东西,而不是一个asp.net。

这不是一个答案,但由于我不能在评论中说这个,所以这里是:

请尝试以下代码并报告结果。(请不要在Page_Load或其他地方更改任何其他内容)

public void ddlBatchCodeDelBind()
{
    var x = new Dictionary<int, string>();
    x.Add(1, "Data 1");
    x.Add(2, "Data 2");
    x.Add(3, "Data 3");
    ddlBatchCodeDel.DataSource = X;
    ddlBatchCodeDel.DataTextField = "Value";
    ddlBatchCodeDel.DataValueField = "Key";
    ddlBatchCodeDel.DataBind();
}