У меня есть checkListBox в моем приложении для формы Windows и привязан к данным моей базы данных с SQL. Я заполняю список элементов в соответствии с тем, что я выбираю из своего comboBox. Если я выберу элемент 1 из своего comboBox, он отобразит имя клиента, использующего этот элемент. Я хочу получить идентификатор клиентов в соответствии с тем, что я проверяю в своем checkListBox.Как получить идентификатор элемента в CheckListBox
Вот как я заполняю моего COMBOBOX
private void fill_comboBox()
{
myConn = new SqlConnection("Server = localhost; Initial Catalog= dbName; Trusted_Connection = True");
try
{
string query = "select itemId, itemName from item_detail";
SqlDataAdapter da = new SqlDataAdapter();
myConn.Open();
DataTable dt = new DataTable();
SqlCommand command = new SqlCommand(query, myConn);
SqlDataReader reader = command.ExecuteReader();
dt.Load(reader);
DataRow dr;
dr= dt.NewRow();
dr.ItemArray = new object[] { 0, "<----------Select an item-------> " };
dt.Rows.InsertAt(dr, 0);
itemComboBox.DataSource = dr;
itemComboBox.ValueMember = "itemId";
itemComboBox.DisplayMember = "itemName";
fill_customerCheckListBox();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
Вот как я заполняю мой checkListBox
private void fill_customerCheckListBox()
{
myConn = new SqlConnection("Server = localhost; Initial Catalog= dbName; Trusted_Connection = True");
try
{
myConn.Open();
DataSet myDataSet = new DataSet();
myDataSet.CaseSensitive = true;
string commandString = "select fullName from[customer_detail] as cd LEFT JOIN[item_customer] as ic ON ic.customerId= cd.customerI WHERE ic.itemId= '" + itemCombBox.SelectedValue + "' ";
myCommand = new SqlCommand();
myCommand.Connection = myConn;
myCommand.CommandText = commandString;
SqlDataAdapter myDataAdapter = new SqlDataAdapter();
myDataAdapter.SelectCommand = myCommand;
myDataAdapter.TableMappings.Add("Table", "customer_detail");
myDataAdapter.Fill(myDataSet);
DataTable myDataTable = myDataSet.Tables[0];
customerCB.Items.Clear();
string s = "Select All Customer";
customer.Items.Add(s);
foreach (DataRow dataRow in myDataTable.Rows)
{
customerCB.Items.Add(dataRow["fullName"]);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
У меня есть praremter цикла, который пытается перебрать каждый проверяемый элемент от моего клиентаCB, но это не работает. Когда я вхожу в режим отладки, код DataRow row = (itemChecked as DataRowView).Row;
вызывает исключение
Ссылка на объект не установлена в экземпляр объекта.
Я понятия не имею, как это исправить. Помощь будет признателен, спасибо
string parameterList = "";
foreach (object itemChecked in customerCB.CheckedItems)
{
DataRow row = (itemChecked as DataRowView).Row;
parameterList += (parameterList.Length == 0) ? row[0].ToString() : ", " + row[0].ToString();
}
что 'customerCB'? Что такое член ValueMember и DIsplay? Это WinForm или WPF? –
@alekkowalczyk вы действительно вообще прочитали мой вопрос? – RedRocket
Вы не устанавливаете значение ["fullName"] как фактический элемент? Как вы можете ожидать, что itemChecked будет иметь полную строку? – zaitsman