值不能为null。参数名称:ASP.NET中的数据绑定时的键

时间:2010-04-08 05:01:50

标签: c# asp.net sql-server

我正在尝试将数据绑定到sql server中的列表框,然后收到错误“Value not not null.Parameter name:key”

ddlCountry = new Obout.ComboBox.ComboBox();
ddlCountry.Width = 200;
ddlCountry.Height = 200;
ddlCountry.DataTextField = "Country";
ddlCountry.DataValueField = "Country";

sqlCommand = "SELECT [Country] FROM [tbl_LookupCountry] where [Country] IS NOT NULL";
SqlConnection sqlConCountry = new SqlConnection(connectString);
SqlCommand sqlCommCountry = new SqlCommand();
sqlCommCountry.Connection = sqlConCountry;
sqlCommCountry.CommandType = System.Data.CommandType.Text;
sqlCommCountry.CommandText = sqlCommand;
sqlCommCountry.CommandTimeout = 300;
sqlConCountry.Open();
reader = sqlCommCountry.ExecuteReader();
ddlCountry.DataSource = reader;
ddlCountry.DataBind();
sqlConCountry.Close();

以前有人遇到过这个问题吗?

1 个答案:

答案 0 :(得分:0)

理想情况下,您应该返回类似于“Id”和国家/地区“名称”的列。 Id将是下拉列表的值,而Name将是用户在下拉列表中看到的文本。

确保下拉列表中的DataTextField和DataValueField分别为“Id”和“Name”列分配了上述示例。

编辑: - 非常奇怪,如果这仍然无效,您是否可以尝试在databind之前将下拉列表的SelectedValue设置为null?

尝试将数据绑定代码移出If(!IsPostBack)的另一个选项。这又是奇怪的。