Saya dapat mengikat data dari database ke ComboBox, tetapi ketika mencoba menyimpan kembali nilai indeks yang dipilih, itu menunjukkan null reference error.

public Form1()
{
    InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{
    BindPAId();
    getPartyAccType();
}

private void btnAdd_Click(object sender, EventArgs e)
{
    mode = "New";
    // getting error here 
    string AccTypeIndex = ddlAccountType.SelectedIndex.ToString();
}

public void getPartyAccType()
{
    // ddlAccountType.Items.Clear();
    PartyAccount objType = new PartyAccount();

    List<PartyAccount> ListType = objType.getAccountPartyType();
    ddlAccountType.DataSource = ListType;
    ddlAccountType.ValueMember = "AccTypeId";
    ddlAccountType.DisplayMember = "AccType";

    ddlAccountType = null;
    ListType = null;
}

screenshot

1
yash fale 15 Oktober 2017, 10:32
1
Mengapa Anda memiliki pernyataan ini? -- ddlAccountType = null; Ini menyebabkan objek 'ddlAccountType' Anda menjadi null, saat Anda mengakses SelectedIndex di event handler ButtonClick.
 – 
Dinny
15 Oktober 2017, 10:37
DdlAccountType = nol; setelah menghapus ini saya mendapatkan nilai indeks, jika saya membuatnya nol mengapa itu menunjukkan data dalam kotak kombo tidak dipahami
 – 
yash fale
15 Oktober 2017, 10:46
Pengikatan data kotak kombo Anda selesai dan kontrol sudah diberikan pada formulir Anda sebelum Anda menyetelnya ke nol.
 – 
Dinny
15 Oktober 2017, 10:48

1 menjawab

Jawaban Terbaik

Alasan Anda mendapatkan NullReferenceException adalah karena Anda menyetel referensi ke null sendiri. Masalahnya terletak di dalam getPartyAccType Anda:

public void getPartyAccType()
{
    PartyAccount account = new PartyAccount();

    List<PartyAccount> accountPartyType = account.getAccountPartyType();
    ddlAccountType.DataSource = accountPartyType;
    ddlAccountType.ValueMember = "AccTypeId";
    ddlAccountType.DisplayMember = "AccType";

    //ddlAccountType = null;
    //accountPartyType = null;
}

Tidak perlu null dllAccountType apa pun. Membatalkan ini berarti menghapus sepenuhnya referensi ke komponen Anda, yang bukan yang Anda inginkan. Selain itu, Anda tidak perlu null variabel accountPartyType (ListType dalam kode Anda), pengumpul sampah .NET akan menghapus objek dari memori jika diperlukan; tidak perlu melakukan ini sendiri.

1
Jevgeni Geurtsen 4 November 2017, 02:34
Terima kasih atas jawabannya baik Dinny dan Jevgeni, menerima yang kedua untuk balasan tidak ada tanda centang yang tersedia untuk ditandai sebagai Jawaban untuk yang pertama dan dari Dinny
 – 
yash fale
16 Oktober 2017, 14:30