datatable.select 在带有 javascript 参数的 cshtml 中
datatable.select in cshtml with javascript parameter
我的型号代码
public class viewCase
{
public List<string> lstCategory { get; set; }
public DataTable dtWrkTsk { get; set; }
}
我的控制器代码
string query = "SELECT WorkFlowID,Subject,Category FROM CMSTasksWorkFlow"
objcase.dtWrkTsk = objdataclas.ExecuteDataTable(query);
return View("../ViewCases/CasesScreen",objcase);
我的cshtml代码
function getCaption() {
var cat= $("#layout option:selected").text(); //variable for select condition
var arr = @Html.Raw(Newtonsoft.Json.JsonConvert.SerializeObject(
Model.dtWrkTsk.Select("Catagory='" + cat + "'") )); //<- error here
}
its giving me error 'cat ' does not exist in current context
如果我尝试
function getCaption() {
var cat= $("#layout option:selected").text(); //variable for select condition
var arr = @Html.Raw(Newtonsoft.Json.JsonConvert.SerializeObject(
Model.dtWrkTsk.Select("Catagory='" +@<text> cat </text> + "'") ));} //<- error here
CS1660: Cannot convert lambda expression to type 'string' because it
is not a delegate type
<div id="addTask" class="modal fade " aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content round">
<div class="modal-header"><h4>New Task </h4></div>
<div id="tbody" class="modal-body" style="height:20%">
@Html.DropDownList("layout", Model.lstCategory.Select(m => new SelectListItem { Text = m, Value = m }), "All", new { onclick = "getCaption()" })
<div id="dtask" style="width: 80%; overflow: scroll; ">
</div>
</div>
<div class="modal-footer">
<button type="button" data-dismiss="modal" class="btn btn-primary" >OK</button>
<button type="button" data-dismiss="modal" class="btn">Cancel</button>
</div>
</div>
</div>
</div>
我正在尝试保持数据表与服务器断开连接,因此每当用户更改 Html.DropDownList
函数中的值时,getCaption()
就会被调用
我只需要 select 数据表中的条件,其中我 select 类别具有 javascript 变量传递
如何在 datatable.select
中传递我的 javascript 变量
var arr = @Html.Raw(...)
中的 @Html.Raw()
是剃须刀代码,在发送到视图之前在服务器上进行解析。它包括一个 .Select()
查询,该查询使用当时不存在的 javascript 变量 - 它不在范围内。
您需要将集合分配给 javascript 变量,并根据所选选项过滤 javascript 中的结果数组。
以下假设 dtWrkTsk
是包含 属性 string Category
的模型的集合,并且您希望将集合归档到 return 只有 Category
值匹配所选选项
@Html.DropDownList("layout", Model.lstCategory.Select(m => new SelectListItem { Text = m, Value = m }), "All")
或
@Html.DropDownList("layout", new SelectList(Model.lstCategory), "All")
<script>
// Assign the collection to a javascript array
var arr = @Html.Raw(Json.Encode(Model.dtWrkTsk))
$('#layout').change(function() {
var selectedCategory = $(this).val();
// Return all objects in the collection that match
var result = $(arr).filter(function(index, item) {
return item.Category === selectedCategory;
});
.... // do something with the results
});
</script>
额外建议阅读 - Unobtrusive JavaScript
我的型号代码
public class viewCase
{
public List<string> lstCategory { get; set; }
public DataTable dtWrkTsk { get; set; }
}
我的控制器代码
string query = "SELECT WorkFlowID,Subject,Category FROM CMSTasksWorkFlow"
objcase.dtWrkTsk = objdataclas.ExecuteDataTable(query);
return View("../ViewCases/CasesScreen",objcase);
我的cshtml代码
function getCaption() {
var cat= $("#layout option:selected").text(); //variable for select condition
var arr = @Html.Raw(Newtonsoft.Json.JsonConvert.SerializeObject(
Model.dtWrkTsk.Select("Catagory='" + cat + "'") )); //<- error here
}
its giving me error 'cat ' does not exist in current context
如果我尝试
function getCaption() {
var cat= $("#layout option:selected").text(); //variable for select condition
var arr = @Html.Raw(Newtonsoft.Json.JsonConvert.SerializeObject(
Model.dtWrkTsk.Select("Catagory='" +@<text> cat </text> + "'") ));} //<- error here
CS1660: Cannot convert lambda expression to type 'string' because it is not a delegate type
<div id="addTask" class="modal fade " aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content round">
<div class="modal-header"><h4>New Task </h4></div>
<div id="tbody" class="modal-body" style="height:20%">
@Html.DropDownList("layout", Model.lstCategory.Select(m => new SelectListItem { Text = m, Value = m }), "All", new { onclick = "getCaption()" })
<div id="dtask" style="width: 80%; overflow: scroll; ">
</div>
</div>
<div class="modal-footer">
<button type="button" data-dismiss="modal" class="btn btn-primary" >OK</button>
<button type="button" data-dismiss="modal" class="btn">Cancel</button>
</div>
</div>
</div>
</div>
我正在尝试保持数据表与服务器断开连接,因此每当用户更改 Html.DropDownList
函数中的值时,getCaption()
就会被调用
我只需要 select 数据表中的条件,其中我 select 类别具有 javascript 变量传递
如何在 datatable.select
中传递我的 javascript 变量var arr = @Html.Raw(...)
中的 @Html.Raw()
是剃须刀代码,在发送到视图之前在服务器上进行解析。它包括一个 .Select()
查询,该查询使用当时不存在的 javascript 变量 - 它不在范围内。
您需要将集合分配给 javascript 变量,并根据所选选项过滤 javascript 中的结果数组。
以下假设 dtWrkTsk
是包含 属性 string Category
的模型的集合,并且您希望将集合归档到 return 只有 Category
值匹配所选选项
@Html.DropDownList("layout", Model.lstCategory.Select(m => new SelectListItem { Text = m, Value = m }), "All")
或
@Html.DropDownList("layout", new SelectList(Model.lstCategory), "All")
<script>
// Assign the collection to a javascript array
var arr = @Html.Raw(Json.Encode(Model.dtWrkTsk))
$('#layout').change(function() {
var selectedCategory = $(this).val();
// Return all objects in the collection that match
var result = $(arr).filter(function(index, item) {
return item.Category === selectedCategory;
});
.... // do something with the results
});
</script>
额外建议阅读 - Unobtrusive JavaScript