C# 如何使用dropdownList进行搜索是ASP.NET核心MVC
我有一个表,我试图在其中搜索,它是为所有工作,除了一个已经添加使用dropdownList 在数据库中,它们被保存为tinyint,所以当我按数字搜索时,它可以工作,但我想按单词搜索 例如,我使用以下代码来初始化它们:C# 如何使用dropdownList进行搜索是ASP.NET核心MVC,c#,asp.net,asp.net-core,C#,Asp.net,Asp.net Core,我有一个表,我试图在其中搜索,它是为所有工作,除了一个已经添加使用dropdownList 在数据库中,它们被保存为tinyint,所以当我按数字搜索时,它可以工作,但我想按单词搜索 例如,我使用以下代码来初始化它们: public enum Education : Int16 { PHD = 1, } 当我搜索1时,它会显示有博士学位的结果,但当我搜索博士学位时,什么也不会显示 我正在使用ADO.NET进行CRUD操作 这是我在控制器中使用的方法的代码: string conn
public enum Education : Int16
{
PHD = 1,
}
当我搜索1时,它会显示有博士学位的结果,但当我搜索博士学位时,什么也不会显示
我正在使用ADO.NET进行CRUD操作
这是我在控制器中使用的方法的代码:
string connectionString = Configuration["ConnectionStrings:WebApplication7ContextConnection"];
using (SqlConnection connection = new SqlConnection(connectionString))
{
//SqlDataReader
connection.Open();
string email = User.Identity.Name;
SqlCommand command = new SqlCommand(email, connection);
if(searchString == null)
{
string sql = "Select * From Teacher Where Email = '" + email + "' ORDER BY AddedOn DESC";
SqlCommand command2 = new SqlCommand(sql, connection);
using (SqlDataReader dataReader = command2.ExecuteReader())
{
while (dataReader.Read())
{
ContactUsMessage teacher = new ContactUsMessage();
teacher.Id = Convert.ToInt32(dataReader["Id"]);
teacher.Name = Convert.ToString(dataReader["Name"]);
teacher.Email = Convert.ToString(dataReader["Email"]);
teacher.Phone = Convert.ToString(dataReader["Phone"]);
teacher.education = (Education)Convert.ToInt16(dataReader["Education"]);
teacher.Message = Convert.ToString(dataReader["Message"]);
teacher.AddedOn = Convert.ToDateTime(dataReader["AddedOn"]);
teacherList.Add(teacher);
}
}
}
else
{
string sql = "Select * From Teacher Where Email = '" + email + "' AND education = '"+searchString+"' AND Message LIKE '%"+searchString+"%' OR Name LIKE '%" + searchString + "%' OR Phone LIKE '%" + searchString + "%' ORDER BY AddedOn DESC";
SqlCommand command2 = new SqlCommand(sql, connection);
using (SqlDataReader dataReader = command2.ExecuteReader())
{
while (dataReader.Read())
{
ContactUsMessage teacher = new ContactUsMessage();
teacher.Id = Convert.ToInt32(dataReader["Id"]);
teacher.Name = Convert.ToString(dataReader["Name"]);
teacher.Email = Convert.ToString(dataReader["Email"]);
teacher.Phone = Convert.ToString(dataReader["Phone"]);
teacher.education = (Education)Convert.ToInt16(dataReader["Education"]);
teacher.Message = Convert.ToString(dataReader["Message"]);
teacher.AddedOn = Convert.ToDateTime(dataReader["AddedOn"]);
teacherList.Add(teacher);
}
}
}
connection.Close();
}
return View(teacherList);
您可以使用Select2 dropdownlist autocomplete+组合框,如下所示: 视图:
希望这对您有所帮助……请发布您已经尝试过的内容。您提供的信息太少,不清楚。@khalid您能看一下下面我的答案并告诉我是否有效吗?
@Html.DropDownListFor(m => m.StudentId, Enumerable.Empty<SelectListItem>(), "Please select", new { @class = "", /* @Value = 1*/ })
$(document).ready(function () {
var student = $("#StudentId");
//for Select2 Options: https://select2.github.io/options.html
student.select2({
language: "tr",//don't forget to add language script (select2/js/i18n/tr.js)
//dropdownParent: $('#yourModal'), //In order to make search box enabled when using Select2 on Bootstrap modal (otherwise remove "tabindex" from modal properties).
//minimumResultsForSearch: Infinity, //permanently hide the search box
minimumInputLength: 0, //for listing all records > set 0
maximumInputLength: 20, //only allow terms up to 20 characters long
multiple: false,
placeholder: "Seçiniz",
allowClear: true,
tags: false, //prevent free text entry
width: "100%",
ajax: {
url: '/Grade/StudentLookup',
dataType: 'json',
delay: 250,
data: function (params) {
return {
query: params.term, //search term
page: params.page
};
},
processResults: function (data, page) {
var newData = [];
$.each(data, function (index, item) {
newData.push({
//id part present in data
id: item.Id,
//string to be displayed
text: item.Name + " " + item.Surname
});
});
return { results: newData };
},
cache: true
},
escapeMarkup: function (markup) { return markup; }, // let our custom formatter work
//templateResult: formatRepo, // omitted for brevity, see the source of this page
//templateSelection: formatRepoSelection // omitted for brevity, see the source of this page
});
//You can simply listen to the select2:select event to get the selected item
student.on('select2:select', onSelect)
function onSelect(evt) {
console.log($(this).val());
}
//Event example for close event
student.on('select2:close', onClose)
function onClose(evt) {
console.log('Closed…');
}
});
public ActionResult Create()
{
return PartialView("_Create"); //DO NOT fill the dropdownlist in this method
}
public ActionResult StudentLookup(string query)
{
var students = repository.Students.Select(m => new StudentViewModel
{
Id = m.Id,
Name = m.Name,
Surname = m.Surname
//FullName = m.Name + " " + m.Surname //Sending "Name" and "Surname" in one parameter causes "The specified type member 'FullName' is not supported in LINQ to Entities" error!
})
//if "query" is null, get all records
.Where(m => string.IsNullOrEmpty(query) || m.Name.StartsWith(query))
.OrderBy(m => m.Name);
return Json(students, JsonRequestBehavior.AllowGet);
}