А функция к какому классу относится? Если ты хочешь этот метод испотльзовать для многих ListBox"сов, то подавай ListBox через параметр. Если нет, то тогда параметр передовать не обязательно. Если у тебя ListBox1 и addcombobox находятся в одном классе, то просто пиши ListBox1.DataSource.... Если в разных классах, то передавай ListBox1 через свойство или сделай ListBox1 public, что не очень хорошо. А я просто дописал компонет, добавил свойства Connection, command..., метод для заполнения LoadData и все! И принеобходимости вызывал этот метод и все!
| Код | using System; using System.ComponentModel; using System.Collections.Generic; using System.Diagnostics; using System.Text; using System.Data; using System.Data.SqlClient; using DevExpress.XtraEditors; using System.Windows.Forms;
namespace CommonEditors { public class CheckListBoxControl : DevExpress.XtraEditors.CheckedListBoxControl { public CheckListBoxControl() { command = new SqlCommand(); dataBaseAdapter = new SqlDataAdapter(); dataSet = new DataSet(); }
private SqlConnection connection; public SqlConnection Connection { get { return connection; } set { connection = value; } }
private SqlDataAdapter dataBaseAdapter; public SqlDataAdapter DataBaseAdapter { get { return dataBaseAdapter; } //set { dataAdapter = value; } }
private DataSet dataSet; public DataSet DataSet { get { return dataSet; } //set { dataSet = value; } }
private SqlCommand command; public SqlCommand Command { get { return command; } set { command = value; } }
private void FillDataSet() { if (connection.State == ConnectionState.Closed) connection.Open(); command.Connection = connection; dataBaseAdapter.SelectCommand = command; dataSet.Clear(); dataBaseAdapter.Fill(dataSet); }
public void LoadData(String displayDataFieldName, String memberDataFieldName) { try { FillDataSet(); this.Items.Clear(); this.DisplayMember = dataSet.Tables[0].Columns[displayDataFieldName].Caption; this.ValueMember = dataSet.Tables[0].Columns[memberDataFieldName].Caption; this.DataSource = dataSet.Tables[0].DefaultView; } catch (Exception e) { MessageBox.Show("Произошла ошибка при заполнении списка!" + (Char)13 + e.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
public void LoadData(int displayDataFieldIndex, int memberDataFieldIndex) { try { FillDataSet(); this.Items.Clear(); this.DisplayMember = dataSet.Tables[0].Columns[displayDataFieldIndex].Caption; this.ValueMember = dataSet.Tables[0].Columns[memberDataFieldIndex].Caption; this.DataSource = dataSet.Tables[0].DefaultView; } catch (Exception e) { MessageBox.Show("Произошла ошибка при заполнении списка!" + (Char)13 + e.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
public void LoadData(SqlConnection sqlConnection, String cmdText, String displayDataFieldName, String memberDataFieldName) { try { connection = sqlConnection; command.CommandText = cmdText; FillDataSet(); this.Items.Clear(); this.DisplayMember = dataSet.Tables[0].Columns[displayDataFieldName].Caption; this.ValueMember = dataSet.Tables[0].Columns[memberDataFieldName].Caption; this.DataSource = dataSet.Tables[0].DefaultView; } catch (Exception e) { MessageBox.Show("Произошла ошибка при заполнении списка!" + (Char)13 + e.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
public void LoadData(SqlConnection sqlConnection, String cmdText, int displayDataFieldIndex, int memberDataFieldIndex) { try { connection = sqlConnection; command.CommandText = cmdText; FillDataSet(); this.Items.Clear(); this.DisplayMember = dataSet.Tables[0].Columns[displayDataFieldIndex].Caption; this.ValueMember = dataSet.Tables[0].Columns[memberDataFieldIndex].Caption; this.DataSource = dataSet.Tables[0].DefaultView; } catch (Exception e) { MessageBox.Show("Произошла ошибка при заполнении списка!" + (Char)13 + e.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); } } } }
|
Правда тут DevExpress.XtraEditors.CheckedListBoxControl, а не стандартный CheckedListBox, но ты таким же способом можешь сделать свой. в FillDataSet() после dataSet.Clear() можно добавиь dataSet.Reset();
Может этот способ не идеален, просто тут на каждый компонент создается DataSet и остальное, но это все можно упростить и оптимизировать! |