1
我在ASP.NET中維護一個動態生成的表,它允許用戶在表中上下移動項目。這在幕後實質上是做什麼的,只是交換表格排序的'sortorder'。我檢查一行是否是第一/最後一列,如果是這樣,只顯示上/下(無論什麼相關)。在動態創建的表中移動行無效(ASP.NET/LINQ/C#)
一個問題現在悄悄出現,我不知道爲什麼。出於某種原因,大部分時間(並非所有時間都是奇怪的)上下按鈕不起作用。以'Up'爲例,當前記錄確實設置爲'above'rows sortorder,但'above'行不採用下面的行排序順序。
現在我已經在我的代碼中設置了我的斷點,奇怪的是一切都設置好了。就在我調用SubmitChanges()到LINQ數據上下文時,它似乎把錯誤的值放入數據庫中。
另外有什麼奇怪的是,我認爲,如果你再次點擊它,它實際上工作。但由於該數字仍然存在,它無法正常工作。
這裏是我的代碼:
if (Request.QueryString["dir"] != null) {
if (Request.QueryString["dir"] == "up") {
var currentrecordup = (from s in dc.InvoiceItems
where Request.QueryString["val"] == s.id.ToString()
select s).Single();
int valsortidup = (int)currentrecordup.sortorder;
var prevrecordup = (from s in dc.InvoiceItems
where s.sortorder < valsortidup
orderby s.sortorder descending
select s).First();
int prevsortidup = (int)prevrecordup.sortorder;
int tempval = valsortidup;
currentrecordup.sortorder = prevsortidup;
prevrecordup.sortorder = tempval;
}
else if (Request.QueryString["dir"] == "down") {
var currentrecorddown = (from s in dc.InvoiceItems
where Request.QueryString["val"] == s.id.ToString()
select s).Single();
int valsortiddown = (int)currentrecorddown.sortorder;
var nextrecorddown = (from s in dc.InvoiceItems
where s.sortorder > valsortiddown
orderby s.sortorder ascending
select s).First();
int nextsortiddown = (int)nextrecorddown.sortorder;
int tempvaldown = valsortiddown;
currentrecorddown.sortorder = nextsortiddown;
nextrecorddown.sortorder = tempvaldown;
}
dc.SubmitChanges();
Response.Redirect("EditInvoice.aspx?id=" + Request.QueryString["id"]);
}
如果它的任何幫助,在我的表中的排序順序列是一個int字段允許空值。謝謝