0

私のページには、ソースがコードの下にあるドロップダウンリストが1つあります。今、私はドロップダウンリストに調整された1つのテキストボックスを配置したいと思います。それを入力すると、ドロップダウンリストのソース(DocumentNo)はテキストボックスに入力した内容に依存し、テキストボックスがnullの場合、ドロップダウンリストにはすべてが表示されます(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()));


        }



    }  
4

1 に答える 1

0

まず、このページにアクセスするたびにデータベースに継続的にクエリを実行する必要がないように、メソッドの開始時にそのクエリの結果をセッション変数のようなものに保存することを強くお勧めします。

次に、ASP.NET でOnTextChangedイベントを使用して、この問題を解決する必要があります。OnTextChanged 属性を挿入して、コード ビハインド内のメソッドをポイントします。このメソッドは、クエリ結果の値 (現在はセッション変数に含まれています) を取得し、含まれddlProjectDocument.Itemsているものを を使用して書き込まれたものと一致するものにリセットしString.StartsWith()ます。

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

この時点で、上記のメソッドの最後で行ったのと同じループを実行して、正しいフォーマットを導入するだけです。

于 2013-02-20T20:49:45.070 に答える