如何填充组合框

时间:2014-06-30 07:09:31

标签: c# .net combobox

我正在尝试使用来自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表单应用程序中工作 请给我解决方案..

1 个答案:

答案 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