我有一个列表框,其中的项目是从数据库表中加载的“名字”,
对于第二个,即重新填充希望我可以使用以下代码
protected void btnRePopulate_Click(object sender, EventArgs e)
{
DataSet oDs = ReadDataSet();
Listbox1.DataTextField = "Name";
Listbox1.DataValueField = "ID";
Listbox1.DataSource = oDs;
Listbox1.DataBind();
}
但是对于第一个我有一些iam工作的东西(当用户键入'a'或其他什么时,我正在使用文本框keyup事件)
除上述两个之外还有更好的选择......
答案 0 :(得分:0)
此过滤和重置最好在客户端本身完成。这样你就不会进行不必要的服务器调用。这是jQuery中的扩展方法。
$(function() {
$('#select').filterByText($('#textbox'), true);
});
扩展方法:
jQuery.fn.filterByText = function(textbox, selectSingleMatch) {
return this.each(function() {
var select = this;
var options = [];
$(select).find('option').each(function() {
options.push({value: $(this).val(), text: $(this).text()});
});
$(select).data('options', options);
$(textbox).bind('change keyup', function() {
var options = $(select).empty().scrollTop(0).data('options');
var search = $.trim($(this).val());
var regex = new RegExp(search,'gi');
$.each(options, function(i) {
var option = options[i];
if(option.text.match(regex) !== null) {
$(select).append(
$('<option>').text(option.text).val(option.value)
);
}
});
if (selectSingleMatch === true &&
$(select).children().length === 1) {
$(select).children().get(0).selected = true;
}
});
});
};
我在Lessan Vaezi的博客上找到了live demo如何做到这一点。