我正在尝试在我的 radgrid 上使用拖动重新排序。我的代码对我来说效果很好(它在 RowDrop 事件上触发),但我的客户无法让它工作,我已经对其进行了故障排除,以表明当他进行放置时,args 的 DestDataItem 属性为空,所以丢弃逻辑永远不会触发?!?这是我的代码:
protected void questionGrid_RowDrop(object sender, GridDragDropEventArgs e)
{
if (e.DestDataItem != null)
{
int tempId = int.Parse(editingId.Value);
theTemplate = ent.SurveyTemplates.Where(i => i.Id == tempId).FirstOrDefault();
int id = int.Parse(e.DraggedItems[0]["Id"].Text);
SurveyQuestion draggedQuestion = ent.SurveyQuestions.Where(i => i.Id == id).FirstOrDefault();
List<SurveyQuestion> tempArray = theTemplate.Questions.OrderBy(i => i.Rank).ToList();
tempArray.Remove(draggedQuestion);
tempArray.Insert(e.DestDataItem.ItemIndex, draggedQuestion);
int j = 0;
foreach (SurveyQuestion sq in tempArray)
{
sq.Rank = j;
j++;
}
ent.SaveChanges();
questionGrid.Rebind();
}
else
{
Exceptions.LogException(new Exception("NULL DEST"));
}
}
它只是引用拖动的项目并将其从项目列表中拉出并将其重新插入到新索引处,然后将每个项目的 rank 属性更新为其新索引并保存。
为什么这对我有用而不对他有用?这个服务器端代码会受到浏览器差异的困扰吗?