Member 13286930 Ответов: 1

Прокрутите список предложений для текстового поля


Привет,

Я работаю над автозаполнением текстового поля в MVC 4. Предложение, которое я получаю, исходит из моей базы данных. Проблема в том, что предложение не входит в список прокрутки и влияет на выравнивание страницы. Это влияет на положение другого текстового поля. И когда я очищаю текстовое поле, все предложения для этого конкретного текстового поля отображаются. я не хочу никаких предложений, когда очищаю текстовое поле.

Что я уже пробовал:

код в контроллере:-
public JsonResult GetSuggest(string technology)
       {



           var cn = new SqlConnection();
           var ds = new DataSet();
           string strCn = ConfigurationManager.ConnectionStrings["Database"].ToString();
           cn.ConnectionString = strCn;
           var cmd = new SqlCommand
           {
               Connection = cn,
               CommandType = CommandType.Text,
               CommandText = "select distinct Domain from files Where Domain like @myParameter and Domain!=@myParameter2"
           };

           cmd.Parameters.AddWithValue("@myParameter", "%" + technology + "%");
           cmd.Parameters.AddWithValue("@myParameter2", technology);

           try
           {
               cn.Open();
               cmd.ExecuteNonQuery();
               var da = new SqlDataAdapter(cmd);
               da.Fill(ds);
           }
           catch (Exception)
           {
           }
           finally
           {
               cn.Close();
           }
           DataTable dt = ds.Tables[0];
           var txtItems = (from DataRow row in dt.Rows
                           select row["Domain"].ToString()
                               into dbValues
                           select dbValues.ToLower()).ToList();

           return Json(txtItems, JsonRequestBehavior.AllowGet);

       }




в виду():-
<pre><script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-2.0.3.min.js"></script>
<script type="text/javascript">
    var textbox;
    var selectValue;

    $(function () {
        textbox = $("#Domain");
        selectValue = $('ul#selectedValue');
        
        textbox.on("input", function () {
            getAutoComplete(textbox.val());
        });
    });
    function getAutoComplete(technology) {
        var uri = "Index/GetSuggest";
        $.getJSON(uri, { technology: technology })
       .done(function (data) {
           selectValue.html("");
           var count = 0;
           $.each(data, function (key, item) {
               //$('<option>').text(item).appendTo('#selectedValue');
               var li = $('<li/>').addClass('ui-menu-item').attr('role', 'menuitem')
                   .html("<a href='#' onclick=\"setText('" + item + "')\">" + item + "</a>")
                   .appendTo(selectValue);
               count++;
           });
       });
    }
    function setText(text) {
        textbox.val(text);
        getAutoComplete(text);
    }

</script>


<input type="text" id="Domain" class="form-control" placeholder="Technology" name="Domain"><br />
                              <ul style="list-style:none" id="selectedValue"></ul>

1 Ответов

Рейтинг:
0

Bohdan Stupak

Если вы не хотите отображать подсказку при очистке значения просто используйте защитное кодирование в вашем контроллере

public JsonResult GetSuggest(string technology)
{
   if (string.IsNullOrEmpty(technology))
       return Json(new [] { new object() }, JsonRequestBehavior.AllowGet);
   //here goes your code
}

Чтобы включить прокрутку в уль применить некоторые CSS
#selectedValue {
    height:200px; //apply you height
    overflow:hidden; 
    overflow-y:scroll;
}