我如何将数据放入下拉框中,并能够通过输入搜索它
How do I put data into a dropdown box and be able search for it by typing?
我正在努力把数据下拉框。数据不是预定义的数据集,因此不像将数据硬编码到下拉框中那么简单。数据创建完成后,我希望将其填充到一个下拉框中。目前,数据是通过复选框显示的。我还想有一个搜索功能,将带来智能感应。例如,当我输入"ALE"时,我希望它显示带有字母"ALE"的数据,例如"Alex","Alexander","Alexis"等。请理解,我是MVC的新手。
总之,这就是我努力摆脱我的程序。我的程序创建了"研究员",一旦"研究员"在系统中被捕获,"研究员"现在可以进行研究"提交"。因此,当"提交"被捕获时,"研究员"应该能够从下拉框中搜索他/她的名字(以及其他名字,如果需要的话)。因为会有很多名字,"研究员"下拉框旁边也应该有一个搜索功能。
创建提交视图:
<div class="form-group">
@Html.Label("Researchers", new { @class = "control-label col-md-2" })
<div class="col-md-offset-2 col-md-10">
@{
int cnt = 0;
List<RMS.ViewModels.AssignedResearcherData> researchers = ViewBag.Researcher;
foreach (var researcher in researchers)
{
if (cnt++ % 3 == 0)
{
@:</tr><tr>
}
@:<td>
<input type="checkbox"
name="selectedResearchers"
value="@researcher.ResearcherID"
@(Html.Raw(researcher.Assigned ? "checked='"checked'"" : "")) />
@researcher.FullName
@:</td>
}
@:</tr>
}
</div>
</div>
提交控制器:
private void PopulateAssignedResearcherData(Submission submission)
{
var allResearchers = db.Researcher;
var submissionResearchers = new HashSet<int>(submission.Researcher.Select(i => i.ResearcherID));
var viewModel = new List<AssignedResearcherData>();
foreach (var researcher in allResearchers)
{
viewModel.Add(new AssignedResearcherData
{
ResearcherID = researcher.ResearcherID,
FirstName = researcher.FirstName,
Surname = researcher.Surname,
Assigned = submissionResearchers.Contains(researcher.ResearcherID)
});
}
ViewBag.Researcher = viewModel;
// ViewBag.ResearcherSelect = new MultiSelectList(viewModel, "ResearcherID", "FullName");
}
你可以使用第三方插件如Select2来实现下拉列表搜索https://select2.github.io/
你所需要做的就是代替生成复选框,生成带有选项的Select,然后调用select2:
//include library at top
<link href="//cdnjs.cloudflare.com/ajax/libs/select2/4.0.0/css/select2.min.css" rel="stylesheet" />
<script src="//cdnjs.cloudflare.com/ajax/libs/select2/4.0.0/js/select2.min.js"></script>
// init select2
<script type="text/javascript">
$('#myDDl').select2();
</script>
// generate select instead of checkbox
<select id="myDDl" name="selectedResearchers" multiple="multiple">
@foreach (var researcher in researchers)
{
<option value="@researcher.ResearcherID"
@(Html.Raw(researcher.Assigned ? "checked='"checked'"" : ""))>
@researcher.FullName
</option>
}
</select>
确保签出select2以获得更多可以传入的选项https://select2.github.io/examples.html
阅读你的问题,我不确定你是否在生成你的下拉框时遇到了麻烦(但你的第一句话看起来像你)。如果你需要帮助的话你需要做的就是用c#将viewModel
列表转换成MultipleSelectList
列表然后在Razor中生成下拉列表-
private void PopulateAssignedResearcherData(Submission submission)
{
var allResearchers = db.Researcher;
var submissionResearchers = new HashSet<int>(submission.Researcher.Select(i => i.ResearcherID));
var viewModel = new List<AssignedResearcherData>();
foreach (var researcher in allResearchers)
{
viewModel.Add(new AssignedResearcherData
{
ResearcherID = researcher.ResearcherID,
FirstName = researcher.FirstName,
Surname = researcher.Surname,
Fullname = researcher.FirstName + " " + researcher.Surname,
Assigned = submissionResearchers.Contains(researcher.ResearcherID)
});
}
ViewBag.Researcher = viewModel;
ViewBag.ResearcherSelect = new MultiSelectList(viewModel, "ResearcherID", "FullName", viewModel.Where(rs => rs.Assigned);
}
剃须刀
<div class="form-group">
@Html.Label("Researchers", new { @class = "control-label col-md-2" })
<div class="col-md-offset-2 col-md-10">
@{
int cnt = 0;
List<RMS.ViewModels.AssignedResearcherData> researchers = ViewBag.Researcher;
foreach (var researcher in researchers)
{
if (cnt++ % 3 == 0)
{
@:</tr><tr>
}
@:<td>
@Html.TextBox("researcherSearch")
@Html.DropDownList("researcherList", ViewBag.ResearcherSelect)
@:</td>
}
@:</tr>
}
</div>
</div>
一旦完成,使用其他答案中的建议或jQuery UI的自动完成功能添加搜索功能应该相对简单(http://jqueryui.com/autocomplete/)。
如果你去jQuery UI路线我建议也许转换你的ViewBag.Researcher
变量JSON作为数据源使用
- jQuery用fiddle在标题中查询移动搜索输入(标题的覆盖)
- 单击时在搜索输入上附加文本
- d3:搜索输入以返回嵌套的数据值
- 控制器作为搜索输入表单的语法
- 如何解决区分大小写搜索的搜索输入问题
- 当用户使用JavaScript键入内容时,如何设置以搜索输入为中心
- 搜索输入问题显示滚动
- 基于多搜索输入筛选ngrepeat
- 如何将搜索输入框的值更改为用户输入值
- jQuery,Bootstrap和大列表(7000 +项目)与搜索/输入提前
- HTML 和 JavaScript 使搜索输入为 URL 做好准备
- 初始化 jQuery 数据表中的搜索输入
- 搜索输入字段以搜索 JavaScript 数组 - 如何验证空输入框
- 在 keyUp 上搜索输入
- Ajax下拉列表,用于搜索输入以使用雅虎天气查找天气
- 如何在 JavaScript/jQuery 中集成下拉菜单和搜索输入框
- 数据表清除搜索输入和正则表达式
- 使用固定搜索输入引导多选
- 根据图像标题的搜索输入过滤图像
- jquery不根据搜索输入从json中获取结果