2013-09-24 5 views
-1

У меня проблема. Как добавить элементы в comboBox?Как добавить элементы в combobox?

Я уже попробовал этот код:

comboBox1.Items.Add("--Dates--"); 
comboBox1.SelectedIndex = 0; 

но не может добавлять элементы в COMBOBOX, когда я запустить программу.

Вот код:

public partial class Trans : Form 
    { 
     string connectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=..\db1.accdb"; 

     private const int CP_NOCLOSE_BUTTON = 0x200; 

     private Choices _choice; 

     private DataSet _ds = new DataSet(); 

     private List<DateTime> _startDate = new List<DateTime>(); 
     private List<DateTime> _endDate = new List<DateTime>(); 

     int startDate; 
     int endDate; 

     public Trans() 
     { 
      InitializeComponent(); 
     } 

     public Trans(Choices _choice) 
      : this() 
     { 
      this._choice = _choice; 
     } 

     private void Trans_Load(object sender, EventArgs e) 
     { 
      startDate = (int)DateTime.Today.AddYears(5).Subtract(DateTime.Today).TotalDays + 1; 
      endDate = (int)DateTime.Today.AddYears(5).Subtract(DateTime.Today).TotalDays + 1; 

      for (int i = 0; i < startDate; i++) 
      { 
       _startDate.Add(DateTime.Today.AddDays(i)); 
      } 

      for (int i = 0; i < endDate; i++) 
      { 
       _endDate.Add(DateTime.Today.AddDays(i)); 
      } 

      StartDateCollection(sender, e); 

      this.dataGridView1.Columns["ID"].Visible = false; 
      this.dataGridView1.Sort(this.dataGridView1.Columns["Times"], System.ComponentModel.ListSortDirection.Ascending); 
      this.label3.Text = "Welcome, " + UserInformation.CurrentLoggedInUser + " " + " " + "-" + " " + " " + UserInformation.CurrentLoggedInUserType; 
      this.label3.ForeColor = System.Drawing.Color.White; 

      dataGridView1.RowPostPaint += new DataGridViewRowPostPaintEventHandler(this.SetRowNumber); 
      dataGridView1.ClearSelection(); 
     } 

     private void ViewDatabase(object sender, EventArgs e) 
     { 
      using (OleDbConnection conn = new OleDbConnection(connectionString)) 
      { 
       string query = "SELECT [ProductCode], [Quantity], [Description], [SubTotal], [Total], [IssuedBy], [To], [Dates], [Times] FROM [TransRecord]"; 

       conn.Open(); 

       using (OleDbDataAdapter _adapter = new OleDbDataAdapter(query, conn)) 
       { 
        _ds.Clear(); 
        _adapter.Fill(_ds, "TransRecord"); 
        dataGridView1.DataSource = null; 
        dataGridView1.Refresh(); 
       } 

       dataGridView1.DataSource = _ds.Tables[0]; 

       conn.Close(); 
      } 
     } 

     private void SetRowNumber(object sender, DataGridViewRowPostPaintEventArgs e) 
     { 
      var grid = sender as DataGridView; 
      var rowIdx = (e.RowIndex + 1).ToString(); 

      var centerFormat = new StringFormat() 
      { 
       Alignment = StringAlignment.Center, 
       LineAlignment = StringAlignment.Center 
      }; 

      var headerBounds = new Rectangle(e.RowBounds.Left, e.RowBounds.Top, grid.RowHeadersWidth, e.RowBounds.Height); 
      e.Graphics.DrawString(rowIdx, this.Font, SystemBrushes.ControlText, headerBounds, centerFormat); 
     } 

     private void StartDateCollection(object sender, EventArgs e) 
     { 
      comboBox1.DataSource = _startDate; 
      comboBox1.FormatString = "M/dd/yyyy"; 
      comboBox1.FormattingEnabled = true; 
     } 

     private void StartDateCollection_SelectedIndexChanged(object sender, EventArgs e) 
     { 
      DateTime comboBox1_SelectedDate = Convert.ToDateTime(comboBox1.SelectedValue); 
      List<DateTime> tempDate = _endDate.Where(d => d > comboBox1_SelectedDate).ToList<DateTime>(); 
      comboBox2.DataSource = tempDate; 
      comboBox2.FormatString = "M/dd/yyyy"; 
      comboBox2.FormattingEnabled = true; 
     } 

(.... Другие коды)

Я поставил items.Add в функции StartDateCollection, но она не появится строка, которая добавляется в , появляются только даты.

Как это исправить?

Спасибо.

Или, я хотел бы иметь от первой записи транзакции даты.

Пример: У меня есть запись транзакции в этот день 24 September 2013, но когда я открываю программу на завтра, я не могу открыть запись транзакций на 24 September 2013, потому что дата 24 September 2013 уже исчезла. Я хочу, чтобы элементы со списком отображались с первой даты записи транзакции.

Я ценю ваш ответ Большое вам спасибо!

Вот скриншот: enter image description here

Как видно из приведенного выше рисунка, дата начала в ComboBox являются Date, я хочу сделать ---Dates--- до Date показаны. Так что это будет что-то вроде этого (в COMBOBOX) --- Даты --- 9/24/2013 9/25/2013 ...... (И так далее)

+0

написать comboBox2.DataBind() после этого comboBox2.FormattingEnabled = true; –

+0

нет .DataBind() sir – Kaoru

+0

Вы используете форму asp.net или windows? –

ответ

1

Если вам нужен первый элемент в поле со списком должен быть какой-то общий текст, например «Выбрать дату» или что-то, так это может быть на подходе.

private void button4_Click(object sender, EventArgs e) 
    { 

     List<DateTime> lstDate = new List<DateTime>(); 
     DateTime dt = DateTime.Now; 
     for (int i = 0; i < 20; i++) 
     { 
      lstDate.Add(dt); 
     } 

     List<string> lstDataSource = lstDate.Select(a => a.ToString("M/dd/yyyy")).ToList(); 
     lstDataSource.Insert(0, "---Select Date---"); 
     comboBox1.DataSource = lstDataSource;    
     comboBox1.FormattingEnabled = true; 

    } 
0
private void button4_Click(object sender, EventArgs e) 
    { 

     List<DateTime> lstDate = new List<DateTime>(); 
     DateTime dt = DateTime.Now; 
     for (int i = 0; i < 40; i++) 
     { 
      lstDate.Add(dt); 
     } 

     comboBox1.DataSource = lstDate; 
     comboBox1.FormatString = "M/dd/yyyy"; 
     comboBox1.FormattingEnabled = true; 

    } 

это добавление даты в комбинированном окне

enter image description here

+0

Да, я уже сделал это сэр, но это не то, что я хочу, пожалуйста, снова обратитесь к вопросу, Я уже включил скриншот. Спасибо – Kaoru

+0

Ваш вопрос еще не ясен, вы говорите: «Так будет что-то вроде этого (в comboBox) --- Даты --- 9/24/2013 9/25/2013 ...... (И так далее), поэтому он отображается в вашей комбинации «Дата начала», как вы показали на снимке экрана. –

+0

Я имею в виду, когда я запускаю программу.ComboBox будет отображаться следующим образом: Первый элемент: --- Даты ---, Второй элемент и третий и т. Д.: (Показать дату) – Kaoru

Смежные вопросы