2013-02-20 5 views
0

У меня есть один раскрывающийся список на моих страницах, что его источник приходит из кода ниже. Теперь мне нравится помещать 1 текстовое поле в мой раскрывающийся список, и когда я набираю текст, источник выпадающего списка (DocumentNo) зависит от того, что я набираю в текстовом поле, а когда текстовое поле - это ниспадающий список, показывает все (DocumentNo), пожалуйста, помогите, как я должен изменить свой код,В зависимости от источника для выпадающего списка

protected void ddlProjectDocument_Load(object sender, EventArgs e) 
{ 
    if (!IsPostBack) 
    { 

     var query = from p in _DataContext.tblDocuments 
        orderby p.DocumentNo 
        select p; 
     int maxs = 0; 
     foreach (tblDocument v in query) 
     { 
      if (v.DocumentNo.Length > maxs) 
       maxs = v.DocumentNo.Length; 
     } 

     foreach (tblDocument vv in query) 
     { 
      string doctitle = vv.DocumentNo; 
      for (int i = vv.DocumentNo.Length; i < maxs; i++) 
      { 
       doctitle += "&nbsp;"; 

      } 
      doctitle += "&nbsp;|&nbsp;"; 
      doctitle += vv.TITLE; 
      // Use HtmlDecode to correctly show the spaces 
      doctitle = HttpUtility.HtmlDecode(doctitle); 
      ddlProjectDocument.Items.Add(new ListItem(doctitle, vv.DocId.ToString())); 


     } 



    } 
+0

Какая платформа пользовательского интерфейса вы используете (WebForms, MVC, WinForms и т. Д.)? – IronMan84

+0

Я использую веб-формы, просто мне нравится набирать выпадающий список, и он меняет источник зависимости от моего значения, я не знаю, может быть, мне нужно использовать другой элемент управления – masoud

ответ

0

во-первых, я очень рекомендую хранить результат этого запроса в начале метода в нечто вроде переменной сеанса, так что вы не» t необходимо постоянно запрашивать базу данных каждый раз, когда вы нажимаете эту страницу.

Во-вторых, вы должны использовать событие OnTextChanged в ASP.NET для решения этой проблемы. Поместите атрибут OnTextChanged, чтобы указать на метод в вашем коде, который будет захватывать значения результата запроса (теперь они находятся в вашей переменной сеанса) и сбрасывает то, что содержится в ddlProjectDocument.Items, на все, что соответствует тому, что было написано с помощью String.StartsWith():

var newListOfThings = queryResults.Where(q => q.DocumentNo.StartsWith(MyTextBox.Value)); 

На этом этапе все, что вам нужно сделать, это сделать тот же цикл, который вы выполнили в конце вышеприведенного метода, чтобы ввести правильное форматирование.

Смежные вопросы