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()));


        }



    }  
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 回答