3

考えられる最も単純な方法で設定されたコンボボックス (cmbStores) を備えた単純な Windows フォームアプリケーション (Access データベースを使用) があります。

問題: 選択した項目の値を取得できません。

このコンボボックスにデータを入力する方法は次のとおりです。

// Variable declaration
        string strQueryStores = "SELECT StoreNumber FROM tblStoresAndRegion ORDER BY StoreNumber";
        string strConnectionString = UtilityClass.GetConnectionString();
        OleDbConnection connStores;
        OleDbDataReader readerStores = null;

        connStores = new OleDbConnection(strConnectionString);

        try
        {
            connStores.Open();
            OleDbCommand sqlGetStores = new OleDbCommand(strQueryStores, connStores);

            cmbStore.Items.Clear();
            cmbStore.Items.Add("All");
            if (connStores != null)
            {
                readerStores = sqlGetStores.ExecuteReader();

                if (readerStores.HasRows)
                {
                    while (readerStores.Read())
                    {
                        cmbStore.Items.Add (Convert.ToInt32(readerStores["StoreNumber"]));
                    }
                }
            }
            cmbStore.SelectedIndex = 0;

        }

        catch (OleDbException oledblEX)
        {
            MessageBox.Show(oledblEX.Message);
        }

        finally
        {
            if (readerStores != null)
                readerStores.Close();
            if (connStores != null)
                connStores.Close();
        }

これは、選択したアイテムの値を取得しようとしている方法です。

int nStoreNumber = Convert.ToInt32(cmbABSM.SelectedItem);
4

4 に答える 4

4

私は少し遅れていることを知っていますが、これはうまくいきます:

int? nStoreNumber = cmbABSM.SelectedValue as int?;
if (nStoreNumber==null)
    return;
于 2012-08-22T21:23:34.573 に答える
4

コンボボックスに設定されているSelectedValue場合は使用してみてください。それ以外の場合は、デフォルトのプロパティになります。ValueMemberText

//If ValueMember is set
int nStoreNumber = Convert.ToInt32(cmbABSM.SelectedValue);

//Otherwise
int nStoreNumber = Convert.ToInt32(cmbABSM.Text);

いずれにせよ、選択した値が有効であることを確認することをお勧めしますint

int nStoreNumber;

if (!int.TryParse(cmbABSM.SelectedValue, out nStoreNumber))
{
    //This is not a valid number.  Notify the user.
}
于 2012-04-25T15:27:08.703 に答える
2

する

Int32.Parse(box.SelectedItem.ToString());

あなたのために働きますか?

于 2012-04-25T15:27:53.820 に答える
1

SelectedItem.ValueまたはSelectedValueを使用できます。実際の違いは、選択がない場合に返されるものにあります。

SelectedItem.Valueは値を返し、選択されたアイテムがない場合はnullを返します。

SelectedValueも値を返しますが、選択された項目がない場合は空の文字列を返します

参考文献:

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.listcontrol.selecteditem.aspx

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.listcontrol.selectedvalue.aspx

于 2012-04-25T15:33:48.910 に答える