Как использовать несколько полей со списком?

Я реализую приложение Windows в C#.Net. У меня есть три таблицы: страна, штат, район. Все они связаны с внешними ключами. Проблема заключается в форме округа, если я выбираю одну страну (поле со списком), связанное состояние не отображается в другом поле со списком. Я использовал событие selectedindexchange для таблицы состояний. Но это показывает

"Входная строка имеет неверный формат"

Я дам код ниже. Пожалуйста, помогите мне.

private void DistrictMaster_Load(object sender, EventArgs e)
{
    BEMaster objBEMaster = new BEMaster();
    BLMaster objBLMaster = new BLMaster();
    cboCountryName.DataSource = objBLMaster.GetCountry();
    cboCountryName.ValueMember = "CountryId";
    cboCountryName.DisplayMember = "CountryName";
}

private void cboCountryName_SelectedIndexChanged_1(object sender, EventArgs e)
{
    try
    {
        if (cboCountryName.SelectedValue.ToString() != "")
        {
            BEMaster objBEMaster = new BEMaster();
            objBEMaster.CountryId = Convert.ToInt32(cboCountryName.SelectedValue);
            BLMaster objBLMaster = new BLMaster();
            cboStateName.DataSource = objBLMaster.GetStateByCountryId(objBEMaster);
            cboStateName.DisplayMember = "StateName";
            cboStateName.ValueMember = "StateId";
        }
    }
    catch (Exception)
    {                
        throw;
    }                    
}

Есть ли ошибка в приведенном выше, пожалуйста, дайте мне ответ. Спасибо.


person Community    schedule 09.01.2014    source источник
comment
В какой строке вы получаете ошибку   -  person Vignesh Kumar A    schedule 09.01.2014
comment
Добро пожаловать в stackoverflow, см. meta.stackexchange.com/questions/19190/   -  person Arin Ghazarian    schedule 09.01.2014
comment
objBEMaster.CountryId = Convert.ToInt32(cboCountryName.SelectedValue);   -  person user3176656    schedule 09.01.2014


Ответы (1)


В качестве совета, линия

if (cboCountryName.SelectedValue.ToString() != "")

можно заменить в:

if(!String.IsNullOrEmpty(cboCountryName.SelectedValue.ToString())

Насчет вашей проблемы, из вашего описания не понятно в чем проблема, но я думаю, что эта строчка ваша проблема:

objBEMaster.CountryId = Convert.ToInt32(cboCountryName.SelectedValue);

Вместо этого используйте Int32.TryParse. метод, чтобы не обрабатывать исключение и проверять, не является ли проблема проблемой преобразования:

int myCountry;
bool result = Int32.TryParse(cboCountryName.SelectedValue, out myCountry);
if(result)
{
  BEMaster objBEMaster = new BEMaster();
  objBEMaster.CountryId = myCountry;
  BLMaster objBLMaster = new BLMaster();
  cboStateName.DataSource = objBLMaster.GetStateByCountryId(objBEMaster);
  cboStateName.DisplayMember = "StateName";
  cboStateName.ValueMember = "StateId";
}
person Community    schedule 09.01.2014