C# 在asp.net mvc中添加记录后立即自动排序,无需刷新网页
我正在开发一个应用程序,其中每个产品都有一个部分,如下图所示。我正在使用knockout js和OData添加一条记录 当我在C5中点击一条记录上的复制按钮时,现在它正在复制一条我复制的记录,并将其添加到C5部分的末尾。但是我想把这条记录添加到我按下复制按钮的记录的正下方 至于现在,我正在使用LINQ中的OrderBy对部分进行排序,但这只有在我刷新网页时才起作用 LING代码:C# 在asp.net mvc中添加记录后立即自动排序,无需刷新网页,c#,javascript,asp.net,asp.net-mvc,knockout.js,C#,Javascript,Asp.net,Asp.net Mvc,Knockout.js,我正在开发一个应用程序,其中每个产品都有一个部分,如下图所示。我正在使用knockout js和OData添加一条记录 当我在C5中点击一条记录上的复制按钮时,现在它正在复制一条我复制的记录,并将其添加到C5部分的末尾。但是我想把这条记录添加到我按下复制按钮的记录的正下方 至于现在,我正在使用LINQ中的OrderBy对部分进行排序,但这只有在我刷新网页时才起作用 LING代码: public override IQueryable<CanadianCrude> Get()
public override IQueryable<CanadianCrude> Get()
{
return db.CanadianCrudes.OrderByDescending(c => c.Term).ThenBy(c=>c.Bid);
}
var CanadianCrudeViewModel = function (CanadianContext) {
var self = this;
self.canadiancrudes = ko.observableArray();
self.copy = function (canadiancrude) {
var payload = {
Id: canadiancrude.Id, Term: "", Product: canadiancrude.Product, Location: "", Pipeline: "",
BidCP: "", BidVolume: "", Index: "", Bid: "0.0", Offer: "0.0",
OfferVolume: "", OfferCP: ""
};
$.ajax({
url: '/odata/Canadiancrudes',
type: 'POST',
// data: ko.toJSON(payload),
data: JSON.stringify(payload),
contentType: 'application/json',
dataType: 'json'
});
}
$.ajax({
dataType: "json",
url: '/odata/Canadiancrudes',
data: ko.toJSON(self.products),
async: false,
success: function (data) {
self.datainput((ko.utils.arrayMap(data.value, function (canadiancrude) {
var obsCanadianCrude = {
Id: canadiancrude.Id,
Term: ko.observable(canadiancrude.Term),
Product: canadiancrude.Product,
Location: ko.observable(canadiancrude.Location),
Pipeline: ko.observable(canadiancrude.Pipeline),
BidCP: ko.observable(canadiancrude.BidCP),
BidVolume: ko.observable(canadiancrude.BidVolume),
Index: ko.observable(canadiancrude.Index),
Bid: ko.observable(canadiancrude.Bid),
Offer: ko.observable(canadiancrude.Offer),
OfferVolume: ko.observable(canadiancrude.OfferVolume),
OfferCP: ko.observable(canadiancrude.OfferCP),
Edit: ko.observable(false),
Locked: ko.observable(canadiancrude.Locked)
}
self.watchModel(obsCanadianCrude, self.modelChanged);
return obsCanadianCrude;
})));
}
});
var viewModel = new CanadianCrudeViewModel(canadiancrudeSignalR);
ko.applyBindings(viewModel);
查看
<table class="productTable">
<thead>
<tr>
<th>Term</th>
<th>Location</th>
<th>Pipeline</th>
<th>Bid C/P</th>
<th>Index</th>
<th>Bid Volume</th>
<th>Bid</th>
<th>Offer</th>
<th>Offer Volume</th>
<th>Offer C/P</th>
<th colspan="3">Actions</th>
@* <th></th>
<th></th>*@
</tr>
</thead>
<tr>
<script type="text/html" id="read-template">
<td data-bind="text: Term"></td>
<td data-bind="text: Location"></td>
<td data-bind="text: Pipeline"></td>
<td data-bind="text: BidCP"></td>
<td data-bind="text: Index"></td>
<td data-bind="text: BidVolume"></td>
<td class="highlight" data-bind="text: Bid"></td>
<td class="highlight" data-bind="text: Offer"></td>
<td data-bind="text: OfferVolume"></td>
<td data-bind="text: OfferCP"></td>
<td class="actioncells">
@*<a href="#" title="Copy" data-bind="click: $root.copy">
<img src= '@Url.Content("~/Images/add.png")' /></a>*@
<a class="btn" title="Copy" data-bind="click: $root.copy">Copy</a>
</td>
<td class="actioncells">
@*<a href="#" title="Edit" data-bind="click: $root.edit">
<img src= '@Url.Content("~/Images/edit.png")' /></a>*@
<a class="btn btn-success" title="Edit" data-bind="click: $root.edit">Edit</a>
</td>
<td class="actioncells">
@*<a href="#" title="Delete" data-bind="click: $root.remove">
<img src= '@Url.Content("~/Images/delete.png")' /></a>*@
<a class="btn btn-danger" title="Delete" data-bind="click: $root.remove">Delete</a>
</td>
</script>
</tr>
</tbody>
</table>
学期
位置
管道
投标C/P
指数
投标量
投标
提供
报价量
报盘付款交单
行动
@*
*@
@**@
*@
*@
删除
谁能给我一个好方法吗。只要在可观察数组上调用.sort()。。。您可以在视图模型或视图中执行此操作。我如何在viewCall中执行此操作。根据您的observableArray排序。。。您的问题中没有显示任何视图特定的代码,因此我无法添加itI。我不清楚这一点,但我已添加(编辑)了所有代码,以防我使用计算的可观察对象来显示数据。计算出的可观测值将包含您的
加拿大原油
可观测数组,但它将被排序。这样,任何时候任何新数据添加到加拿大原油
中,都会自动显示并排序