2013-02-20 67 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

你正在使用哪個UI框架(WebForms,MVC,WinForms等)? – IronMan84 2013-02-20 19:57:48

+0

我使用網絡形式,只是我喜歡在下拉列表中輸入,它改變了源取決於我的價值,我不知道也許我必須使用另一個控件 – masoud 2013-02-20 20:18:22

回答

0

首先,我會強烈建議存儲該查詢結果的方法開始變得像一個會話變量,以便你不每次點擊這個頁面時都不得不持續查詢數據庫。

其次,您應該使用ASP.NET中的OnTextChanged事件來解決此問題。放入OnTextChanged屬性指向後面的代碼中的一個方法,該方法將獲取查詢結果值(現在可在您的會話變量中找到),並將ddlProjectDocument.Items中包含的內容重置爲與使用String.StartsWith()

寫入內容相匹配的內容
var newListOfThings = queryResults.Where(q => q.DocumentNo.StartsWith(MyTextBox.Value)); 

在這一點上,你所要做的就是做同樣的循環,你在上面的方法末尾做了相同的循環,以引入正確的格式。

相關問題