我的网页中有一个下拉列表,其源代码来自代码。现在我想在我的下拉列表中调整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 += " ";
}
doctitle += " | ";
doctitle += vv.TITLE;
// Use HtmlDecode to correctly show the spaces
doctitle = HttpUtility.HtmlDecode(doctitle);
ddlProjectDocument.Items.Add(new ListItem(doctitle, vv.DocId.ToString()));
}
}
答案 0 :(得分:0)
首先,我强烈建议将方法开头的查询结果存储到会话变量之类的内容中,以便每次点击此页面时都不必连续查询数据库。
其次,您应该使用ASP.NET中的OnTextChanged事件来解决此问题。放入OnTextChanged属性以指向代码后面的方法,该方法将获取查询结果值(现在在会话变量中找到),并将ddlProjectDocument.Items
中包含的内容重置为与所写内容匹配的任何内容。使用String.StartsWith()
:
var newListOfThings = queryResults.Where(q => q.DocumentNo.StartsWith(MyTextBox.Value));
此时您需要做的就是执行与上述方法结尾相同的循环,以引入正确的格式。