0

radgrid でドラッグの並べ替えを使用しようとしています。私が持っているコードはうまく機能します (RowDrop イベントで発生します) が、クライアントはそれを機能させることができません。ドロップロジックがトリガーされない?!? ここに私のコードがあります:

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"));
        }
    }

ドラッグされたアイテムを参照してアイテムのリストからプルし、新しいインデックスに再挿入してから、各アイテムのランク プロパティを新しいインデックスに更新して保存します。

なぜこれが私にはうまくいくのに、彼にはうまくいかないのでしょうか? このサーバー側のコードは、ブラウザーの違いに悩まされる可能性がありますか?

4

1 に答える 1

1

このスレッドで述べたように、項目がグリッド内の実際のデータ行にドロップされていない場合、DestDataItem は null になります。

ターゲットがデータ行でない場合、クライアント側で OnRowDropping イベントを処理し、不要なものを無視することで、RowDrop イベントの発生を防ぐことができます。

function gridRowDropping(sender, args)
{
    if (!args.get_targetGridDataItem())
        args.set_cancel(true);
}
于 2013-04-23T17:47:30.567 に答える