2013-08-13 2 views
0

У меня есть CheckedListBox. Я хочу иметь возможность выбрать из него n элементов, а затем передать эти значения элементов (как Text в CheckedListBox) в sproc. У меня нет проблем с подключением к БД и вызовом sproc. Мне просто нужно выяснить, как назначить выбранные значения элемента переменной. Какой тип данных я должен использовать?pass checkedlistbox проверенные значения элементов для хранимой процедуры

Я думаю, что все, что мне нужно, чтобы выяснить это часть:

string listingId = checkedListBoxBids.CheckedItems.ToString(); 

я вставил свой код ниже. Первые 2 метода называют sprocs, которые я использую; 3-й метод запускает одну из двух sprocs на основе некоторых настроек переключателей/нажатия кнопки подтверждения.

// marks selected listbox item as 'Won' 
private void MarkItemAsWon(string itemWon) 
{ 
    string listingId = checkedListBoxBids.CheckedItems.ToString(); 
    //string listingId = checkedListBoxBids.Text.ToString(); 

    // connection string 
    string cnWatermelon = ConfigurationManager.ConnectionStrings["Watermelon.Properties.Settings.watermelonsConnectionString"].ToString(); 

    SqlConnection watermelonConn = new SqlConnection(cnWatermelon); 

    SqlCommand markItemAsWonCommand = new SqlCommand(); 

    markItemAsWonCommand.CommandType = CommandType.StoredProcedure; 
    markItemAsWonCommand.CommandText = "dbo.MarkItemAsWon"; 

    markItemAsWonCommand.Parameters.Add("@ListingID", SqlDbType.VarChar).Value = listingId; 

    SqlDataAdapter MyDataAdapter = new SqlDataAdapter(); 
    DataTable dt = new DataTable(); 

    try 
    { 
     markItemAsWonCommand.Connection = watermelonConn; 

     watermelonConn.Open(); 

     MyDataAdapter.SelectCommand = markItemAsWonCommand; 

     MyDataAdapter.Fill(dt); 
    } 
    catch (Exception exc_PROCESS) 
    { 
     MessageBox.Show(exc_PROCESS.ToString(), "Error message", 
     MessageBoxButtons.OKCancel, MessageBoxIcon.Asterisk); 
    } 
    finally 
    { 
     watermelonConn.Close(); 
    } 
} 


// marks selected listbox item as 'Lost' 
private void MarkItemAsLost(string itemLost) 
{ 
    string listingId = checkedListBoxBids.CheckedItems.ToString(); 
    //string listingId = checkedListBoxBids.Text.ToString(); 

    // connection string 
    string cnWatermelon = ConfigurationManager.ConnectionStrings["Watermelon.Properties.Settings.watermelonsConnectionString"].ToString(); 

    SqlConnection watermelonConn = new SqlConnection(cnWatermelon); 

    SqlCommand markItemAsLostCommand = new SqlCommand(); 

    markItemAsLostCommand.CommandType = CommandType.StoredProcedure; 
    markItemAsLostCommand.CommandText = "dbo.MarkItemAsLost"; 

    markItemAsLostCommand.Parameters.Add("@ListingID", SqlDbType.VarChar).Value = listingId; 

    SqlDataAdapter MyDataAdapter = new SqlDataAdapter(); 
    DataTable dt = new DataTable(); 

    try 
    { 
     markItemAsLostCommand.Connection = watermelonConn; 

     watermelonConn.Open(); 

     MyDataAdapter.SelectCommand = markItemAsLostCommand; 

     MyDataAdapter.Fill(dt); 
    } 
    catch (Exception exc_PROCESS) 
    { 
     MessageBox.Show(exc_PROCESS.ToString(), "Error message", 
     MessageBoxButtons.OKCancel, MessageBoxIcon.Asterisk); 
    } 
    finally 
    { 
     watermelonConn.Close(); 
    } 
} 



// reads the option selected in the "Won?" groupbox and marks selected item as either 'Won' or 'Lost', then refreshes the checkedlistbox items 
private void buttonWonConfirm_Click(object sender, EventArgs e) 
{ 
    string listingId = checkedListBoxBids.CheckedItems.ToString(); 

    if (radioButtonWonYes.Checked == true) 
    { 

     //foreach (object itemChecked in checkedListBoxBids.CheckedItems) 
     //{ 

     // // show selected items in messagebox 
     // //MessageBox.Show("Item with title: \"" + itemChecked.ToString()); 

     // MarkItemAsWon(itemChecked.ToString()); 
     //} 


     MarkItemAsWon(listingId.ToString()); 

     PopulateBidItems(); 
     PopulateWonItems(); 
    } 
    else 
    { 
     MarkItemAsLost(listingId.ToString()); 

     PopulateBidItems(); 
     PopulateWonItems(); 
    } 
} 
+0

как связать checkedListBoxBids? – Damith

+0

Если вы выбрали несколько элементов, что бы вы хотели передать в SP? –

+0

Возможно, вам захочется взглянуть на [параметры таблицы-значения] (http://www.mssqltips.com/sqlservertip/2112/table-value-parameters-in-sql-server-2008-and-net-c/). Таким образом, вы можете отправить таблицу prameter в базу данных со всеми выбранными элементами. –

ответ

1

checkedListBoxBids.CheckedItems возвратит коллекцию предметов, подлежащих проверке. зависимости от ваших потребностей вы можете получить каждый проверенный предмет или только один из элемента, как показано ниже

foreach(object itemChecked in checkedListBoxBids.CheckedItems) 
{ 
    DataRowView item = itemChecked as DataRowView; 
    string listingID= item["ListingID"]; 

} 

Предположим, вы связываете, как показано ниже

checkedListBoxBids.DataSource = dt; 
checkedListBoxBids.DisplayMember = "ListingName"; 
checkedListBoxBids.ValueMember = "ListingID"; 
+0

Спасибо! Это сработало для меня. –

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

  • Нет связанных вопросов^_^