Josephss73 Ответов: 1

C# просмотр элемента отображения в combobox


Я новичок в программировании баз данных c# и разрабатываю простую форму, которая имеет comboboxes, которые привязаны, и когда я перемещаюсь по записям, отображаемый элемент combobox иногда не отображается, а вместо него отображается элемент value, который имеет представление о том, почему это происходит.

Что я уже пробовал:

This is the code am writing:

private void Frm_R_Load(object sender, EventArgs e)
{
   #region Form load
   this.land_NewTableAdapter.Fill(reentitiesDataset.Land_New);
   FillCombos("T_Region", id_RegionComboBox);
   FillCombos("T_district", id_DistrictComboBox);
   #endregion
}

private void FillCombos(String TableName, ComboBox ComboName)
{
    using (SqlConnection conn = new SqlConnection(string.Format(ConnectionString.DatabaseConnection.GetSQLConnString())))
    {
        try
        {
        conn.Open();
        SqlCommand cmdCombo = new SqlCommand("FillCombos", conn);
        cmdCombo.CommandType = CommandType.StoredProcedure;
        cmdCombo.Parameters.Add("@TableName", SqlDbType.VarChar).Value = TableName;

        SqlDataAdapter DaCombo = new SqlDataAdapter(cmdCombo);
        DataSet DsCombo = new DataSet();
        DaCombo.Fill(DsCombo);

        ComboName.DataSource = DsCombo.Tables[0];
        ComboName.DisplayMember = "Descrp";
        ComboName.ValueMember = "Id";

       }
       catch (Exception ex)
       {
           MessageBox.Show(ex.Message, " ", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }
    }
}

And this is the procedure:

PROCEDURE [dbo].[FillCombos](@TableName as varchar(100))
AS
BEGIN
    Declare @SQL as varchar(1000)
    SET NOCOUNT ON;
    Set @SQL = 'Select Id,Descrp  from ' + @TableName + ' order by 2 '
    exec sp_sqlexec @sql
END
Structure of the tables:

CREATE TABLE [dbo].[T_District]( [Id] [tinyint] IDENTITY(1,1) NOT NULL, [Descrp] [varchar](50) NOT NULL, CONSTRAINT [PK_T_District] PRIMARY KEY CLUSTERED ( [Descrp] ASC )WITH (ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] CREATE TABLE [dbo].[T_Region]( [Id] [bigint] IDENTITY(1,1) NOT NULL, [Descrp] [varchar](255) NOT NULL, [D2] [varchar](255) NULL, CONSTRAINT [PK_T_Region] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY]

1 Ответов

Рейтинг:
2

Dirk Bahle

Я не уверен, как работает ваш код, но я бы использовал binding и WPF (если это вариант для вас) - вокруг этого есть множество статей:
Пошаговая привязка данных WPF с помощью Comboboxes[^]

.. и вы все равно столкнетесь с такими вещами, как UWP...


Josephss73

Спасибо, Дирк все проверит.