0

在我的 Windows 应用程序中,我使用 Text_box 和 List_box。当在按键事件中触发事件时,它会检索数据并在列表框中列出

我的问题是:对于每个击中数据库的按键事件,应用程序变得更慢。

如何减少按键事件中数据库的往返次数?


private void txtVehicleNo_TextChanged(object sender, EventArgs e)
    {
        try
        {
            lstVehicleNo.Visible = true;
            if (!string.IsNullOrEmpty(txtVehicleNo.Text))
            {
                dsResult = oclsBal.GetVhNo(txtVehicleNo.Text);
                if (dsResult.Tables.Count > 0)
                {

                    DataRow dr = dsResult.Tables[0].NewRow();
                    lstVehicleNo.DataSource = dsResult.Tables[0];
                    lstVehicleNo.DisplayMember = "VehicleNo";
                    lstVehicleNo.ValueMember = "VehicleId";
                    lstVehicleNo.SelectedIndex = 0;
                    dsResult.Tables.Clear();
                }

            }
            if (lstVehicleNo.Items.Count == 0)
            {
                lstVehicleNo.Visible = false;
            }
            if (txtVehicleNo.Text.Length == 0)
            {
                lstVehicleNo.Visible = false;
            }
            if (lstVehicleNo.Items.Count == 1)
            {
                if (txtVehicleNo.Text.ToUpper() == lstVehicleNo.Items[0].ToString().ToUpper())
                    lstVehicleNo.Visible = false;
            }

        }
        catch (Exception ex)
        {
            throw ex;
       }

}

4

2 回答 2

1

仅在按键按下超时后检索列表数据,当按键被按下时,重置此超时。这意味着只有在有足够合理的暂停时,即用户停止输入时才获取数据。

或者,使用自动完成样式框来预取任何预期的列表项。

于 2013-07-23T05:24:08.743 回答
0

对于第一次按键,获取以该字母开头的所有记录并将其保存在缓存或本地内存中,然后再按此缓存。由于现在您在本地存储中有一部分数据,因此您应该获得更好的性能。

于 2013-07-23T05:41:00.913 回答