javascriptserializer如何清除自动完成列表

时间:2019-08-02 20:24:25

标签: javascript asp.net

我有一个要根据用户输入填写的自动填充信息,但是javascript保留了旧值。

这是自动补全的javascript代码

 $(function () {
     var lstContractIDs = '<%= jsContract %>';
     var availableIDs = JSON.parse(lstContractIDs);
     $("#txtContractSearch").autocomplete({
         source: availableIDs
     });

     $("#disable").click(function () {
         $("#txtContractSearch").autocomplete({
             disabled: true
         });

     });
     $("#enable").click(function () {
         $("#txtContractSearch").autocomplete({
             disabled: false
         });

     });
 });

这是asp.net中的代码

  public string jsContract = string.Empty;
  private static List<string> contractNumbersSelectedFromDB = new List<string>();

  public void PopulateSearch()
        {
            JavaScriptSerializer serializer = new
            JavaScriptSerializer();

            jsContract = serializer.Serialize(contractNumbersSelectedFromDB);

            PopulateSearchboxAutocomplete();
        }

这里叫PopulateASearchBox

protected void PopulateSearchboxAutocomplete()
{
    #region set months
    List<string> quarters = new List<string>();

    if (drMonth.SelectedValue == "Enero - Marzo")
    {
        quarters.Add("01");
        quarters.Add("02");
        quarters.Add("03");
    }
    else if (drMonth.SelectedValue == "Abril - Junio")
    {
        quarters.Add("04");
        quarters.Add("05");
        quarters.Add("06");
    }
    else if (drMonth.SelectedValue == "Julio - Septiembre")
    {
        quarters.Add("07");
        quarters.Add("08");
        quarters.Add("09");
    }
    else if (drMonth.SelectedValue == "Octubre - Diciembre")
    {
        quarters.Add("10");
        quarters.Add("11");
        quarters.Add("12");
    }
    else // if (drMonth.SelectedValue == "últimos tres meses")
    {
        if (DateTime.Now.AddMonths(-2).Month < 10)
        {
            quarters.Add("0" + DateTime.Now.AddMonths(-2).Month.ToString());
        }
        else
        {
            quarters.Add(DateTime.Now.AddMonths(-1).Month.ToString());
        }
        if (DateTime.Now.AddMonths(-1).Month < 10)
        {
            quarters.Add("0" + DateTime.Now.AddMonths(-1).Month.ToString());
        }
        else
        {
            quarters.Add(DateTime.Now.AddMonths(0).Month.ToString());
        }
        if (DateTime.Now.AddMonths(0).Month < 10)
        {
            quarters.Add("0" + DateTime.Now.AddMonths(0).Month.ToString());
        }
        else
        {
            quarters.Add(DateTime.Now.AddMonths(0).Month.ToString());
        }
    }
    #endregion

    clientSelectedFromDB.Clear();
    PopulateASearchBox(quarters, "erp_clientes", "nombre", clientSelectedFromDB);

    contractNumbersSelectedFromDB.Clear();
    PopulateASearchBox(quarters, "erp_contratos", "numero_contrato", contractNumbersSelectedFromDB);

    estimateSelectedFromDB.Clear();
    PopulateASearchBox(quarters, "erp_cotizaciones", "numero_cotizacion", estimateSelectedFromDB);

    expeditionSelectedFromDB.Clear();
    PopulateASearchBox(quarters, "erp_expediciones", "numero_expedicion", expeditionSelectedFromDB);

    invoiceSelectedFromDB.Clear();
    PopulateASearchBox(quarters, "erp_documentos_facturacion", "numero_documento", invoiceSelectedFromDB);
}

在此处将contractNumbersSelectedFromDB填充到texboxToAddStrings中的contractNumbersSelectedFromDB ==

public void PopulateASearchBox(List<string> quarters, string database, string numeroSearch, List<string> texboxToAddStrings)
{

    string year = drYear.SelectedValue;

    for (int i = 0; i < quarters.Count; i++)
    {
        string selectedContract = year.Substring(year.Length - 2) + quarters[i];
        string selectStatement = "";

        if (numeroSearch == "numero_contrato")
        {
            selectStatement = "select contrato_id, " + numeroSearch + " from " + database + " "
                                       + "where " + numeroSearch + " like '" + selectedContract + "%' order by 2 desc " +
                                       "limit 10000; ";
        }
        else if (numeroSearch == "numero_cotizacion")
        {
            selectStatement = "select cct.cotizacion_id, cot.numero_cotizacion from erp_cotizaciones cot "
                                + "inner join erp_contratos_cotizacion cct on cct.cotizacion_id = cot.cotizacion_id "
                                + " where cot.numero_cotizacion like '" + selectedContract + "%' order by 2 desc"
                                + " limit 10000";
        }
        else if (numeroSearch == "numero_expedicion")
        {
            selectStatement = "select cex.expedicion_id, exp.numero_expedicion from erp_expediciones exp "
                                  + " inner join erp_contratos_expedicion cex on cex.expedicion_id = exp.expedicion_id "
                                  + " where exp.numero_expedicion like '" + selectedContract + "%' order by 2 desc"
                                  + " limit 10000";
        }
        else if (numeroSearch == "numero_documento")
        {
            selectStatement = " SELECT edf.documento_id, edf.numero_documento FROM erp_documentos_facturacion edf "
              + " inner join erp_contratos ctr on ctr.contrato_id=edf.contrato_id "
              + " where edf.numero_documento like '" + selectedContract + "%' order by 2 desc"
              + " limit 10000";
        }
        else if (numeroSearch == "nombre")
        {
            selectStatement = " select cl.cliente_id, cl." + numeroSearch + " " +
                              " from erp_contratos ctr " +
                              " inner join erp_clientes cl on  cl.cliente_id=ctr.cliente_id " +
                              " where ctr.numero_contrato like '" + selectedContract + "%' " +
                              " group by ctr.cliente_id limit 10000 ";
        }
        using (MySqlConnection conn = new MySql.Data.MySqlClient.MySqlConnection(connString))
        {
            conn.Open();
            using (MySqlCommand cmd = conn.CreateCommand())
            {
                cmd.CommandText = selectStatement;

                using (MySqlDataReader reader = cmd.ExecuteReader())
                {
                    while (reader.Read())
                    {
                        string foundNumber = reader.GetString(reader.GetOrdinal(numeroSearch));
                        texboxToAddStrings.Add(foundNumber);
                    }
                }
                conn.Close();
            }
        }
    }
}

以下是我的问题,即使contractNumbersSelectedFromDB包含较小的项列表或没有项,为什么jsContract不更改?

0 个答案:

没有答案