绑定下拉列表未填充(无错误)
本文关键字:无错误 填充 下拉列表 绑定 | 更新日期: 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();
}