我正在尝试使用来自DataBase的数据填充ComboBox,但我遇到的错误是:
无法设置列' yer'。该值违反了此列的MaxLength限制。
我的代码是:
try
{
cmd = new SqlCommand("SELECT SUBSTRING(CONVERT(nvarchar(50),VSDateTiime,105),7,4) as yer FROM SessionDetails where VSNo=@VSNo group by VSDateTiime order by yer desc", con);
cmd.Parameters.AddWithValue("@VSNo", cmbVSNo.SelectedValue);
if (con.State == ConnectionState.Closed)
{
con.Open();
}
SqlDataReader rd = cmd.ExecuteReader();
if (rd.HasRows)
{
cmbVSYear.Items.Clear();
DataTable dt = new DataTable();
dt.Load(rd);
DataRow dr = dt.NewRow();
dr["yer"] = 0;
dr["yer"] = "--Select--";
dt.Rows.InsertAt(dr, 0);
cmbVSYear.DataSource = dt;
cmbVSYear.ValueMember = "yer";
cmbVSYear.DisplayMember = "yer";
}
else
{
cmbVSYear.Items.Clear();
cmbVSYear.Items.Insert(0, "Record not found");
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
if (con.State == ConnectionState.Open)
{
con.Close();
}
}
我在c#.net windows表单应用程序中工作 请给我解决方案..
答案 0 :(得分:1)
当您加载datatable
表单SqlDataReader
时,它会自动将MaxLength分配给您从数据库中检索到的"yer"
列。
SUBSTRING(CONVERT(nvarchar(50),VSDateTiime,105),7,4)
将yer
列MaxLength限制为4
。
您可以使用DataColumn.MaxLength Property
更改最大长度:
DataTable dt = new DataTable();
dt.Load(rd);
dt.Columns["yer"].MaxLength = 10; //or greater