จะใช้กล่องคำสั่งผสมหลายกล่องได้อย่างไร?

ฉันกำลังใช้งานแอปพลิเคชัน 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