Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ пСрСтаскивания элСмСнтов (Drag & Drop) Π² 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ с интСрфСйсами, Π³Π΄Π΅ трСбуСтся быстроС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠ΅ΠΆΠ΄Ρƒ списками, Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ ΠΈΠ»ΠΈ Ρ„ΠΎΡ€ΠΌΠ°ΠΌΠΈ. НапримСр, Π² Π·Π°Π΄Π°Ρ‡Π°Ρ… ΠΏΠΎ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΡŽ Π·Π°ΠΊΠ°Π·Π°ΠΌΠΈ, Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΡŽ рСсурсов ΠΈΠ»ΠΈ настройкС ΠΏΠ°Π½Π΅Π»Π΅ΠΉ инструмСнтов. Однако стандартныС ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Π½Π΅ всСгда ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ Π³ΠΎΡ‚ΠΎΠ²Ρ‹Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ для Ρ‚Π°ΠΊΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ β€” Π΅Ρ‘ приходится Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ.

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ Ρ€Π°Π·Π±Π΅Ρ€Ρ‘ΠΌ Ρ‚Ρ€ΠΈ основных способа ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ пСрСтаскивания Π² 1Π‘ 8.3: Ρ‡Π΅Ρ€Π΅Π· управляСмыС Ρ„ΠΎΡ€ΠΌΡ‹, с использованиСм HTML-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΈ с ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ Π²Π½Π΅ΡˆΠ½ΠΈΡ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚. ОсобоС Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΡƒΠ΄Π΅Π»ΠΈΠΌ Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹ΠΌ ошибкам, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ приводят ΠΊ «подвисанию» интСрфСйса ΠΈΠ»ΠΈ ΠΏΠΎΡ‚Π΅Ρ€Π΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΈ пСрСтаскивании, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ΄Π° для ΠΊΡ€ΡƒΠΏΠ½Ρ‹Ρ… Π±Π°Π·. ВсС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ протСстированы Π½Π° Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… Ρ€Π΅Π»ΠΈΠ·Π°Ρ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ (Π²ΠΊΠ»ΡŽΡ‡Π°Ρ 8.3.23), Π½ΠΎ ΡƒΡ‡Ρ‚ΠΈΡ‚Π΅: Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½ΡŽΠ°Π½ΡΡ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ Π² зависимости ΠΎΡ‚ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ.

Если Π²Ρ‹ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ с событиями ΠΌΡ‹ΡˆΠΈ Π² 1Π‘, Π½Π°Ρ‡Π½ΠΈΡ‚Π΅ с Ρ€Π°Π·Π΄Π΅Π»Π° ΠΎ Π±Π°Π·ΠΎΠ²Ρ‹Ρ… ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ°Ρ… β€” это сэкономит часы ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ. ΠžΠΏΡ‹Ρ‚Π½Ρ‹Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΌΠΎΠ³ΡƒΡ‚ сразу ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹ΠΌ Ρ‚Π΅Ρ…Π½ΠΈΠΊΠ°ΠΌ ΠΈΠ»ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌ ΠΊΠΎΠ΄Π°.

Π‘Π°Π·ΠΎΠ²Ρ‹Π΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ пСрСтаскивания Π² 1Π‘

ΠŸΠ΅Ρ€Π΅Ρ‚Π°ΡΠΊΠΈΠ²Π°Π½ΠΈΠ΅ Π² 1Π‘ строится Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Ρ‚Ρ€Ρ‘Ρ… ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… событий:

  • πŸ–±οΈ ΠΠ°Ρ‡Π°Π»ΠΎΠŸΠ΅Ρ€Π΅Ρ‚Π°ΡΠΊΠΈΠ²Π°Π½ΠΈΡ β€” фиксируСт ΠΌΠΎΠΌΠ΅Π½Ρ‚, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π°ΠΆΠ°Π» Π½Π° элСмСнт ΠΈ Π½Π°Ρ‡Π°Π» Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅;
  • πŸ“₯ ΠŸΠ΅Ρ€Π΅Ρ‚Π°ΡΠΊΠΈΠ²Π°Π½ΠΈΠ΅ β€” отслСТиваСт ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ курсора с Π·Π°ΠΆΠ°Ρ‚ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΌΡ‹ΡˆΠΈ;
  • 🎯 ΠžΠΊΠΎΠ½Ρ‡Π°Π½ΠΈΠ΅ΠŸΠ΅Ρ€Π΅Ρ‚Π°ΡΠΊΠΈΠ²Π°Π½ΠΈΡ β€” срабатываСт ΠΏΡ€ΠΈ отпускании ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΌΡ‹ΡˆΠΈ Π½Π°Π΄ Ρ†Π΅Π»Π΅Π²Ρ‹ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ.

Π’Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° 1Π‘ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Drag & Drop Β«ΠΈΠ· ΠΊΠΎΡ€ΠΎΠ±ΠΊΠΈΒ» Ρ‚Π°ΠΊ ΠΆΠ΅ Π³ΠΈΠ±ΠΊΠΎ, ΠΊΠ°ΠΊ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, JavaScript Π² Π²Π΅Π±-прилоТСниях. Π—Π΄Π΅ΡΡŒ трСбуСтся ручная привязка событий ΠΊ элСмСнтам Ρ„ΠΎΡ€ΠΌΡ‹ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊ строкам Ρ‚Π°Π±Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ поля ΠΈΠ»ΠΈ ΠΊΠ½ΠΎΠΏΠΊΠ°ΠΌ) ΠΈ программная ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π»ΠΎΠ³ΠΈΠΊΠΈ пСрСмСщСния. НапримСр, для пСрСтаскивания строк ΠΌΠ΅ΠΆΠ΄Ρƒ двумя Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ придётся:

  1. Π—Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ исходный элСмСнт (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, строку Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹) Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ;
  2. Π’ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Β«Ρ‚Π΅Π½ΡŒΒ» пСрСтаскиваСмого ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° (ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ);
  3. ΠžΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρ†Π΅Π»Π΅Π²ΠΎΠΉ элСмСнт ΠΏΡ€ΠΈ отпускании ΠΊΠ½ΠΎΠΏΠΊΠΈ;
  4. Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ дСйствиС (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, пСрСнос Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ статуса).

Π‘Π΅Π· этих шагов пСрСтаскиваниС Π±ΡƒΠ΄Π΅Ρ‚ Π»ΠΈΠ±ΠΎ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ, Π»ΠΈΠ±ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ β€” Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΡΡ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° ΠΏΠ΅Ρ€Π²ΠΎΠΌ элСмСнтС ΠΈΠ»ΠΈ ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ отпусканиС ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΌΡ‹ΡˆΠΈ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ Ρ„ΠΎΡ€ΠΌΡ‹.

πŸ’‘

Для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ событий пСрСтаскивания ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π²Ρ‹Π²ΠΎΠ΄ Π² Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ с ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ курсора (ΠŸΠΎΠ·ΠΈΡ†ΠΈΡΠšΡƒΡ€ΡΠΎΡ€Π°ΠœΡ‹ΡˆΠΈ). Π­Ρ‚ΠΎ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Ρ‚ΠΎΡ‡Π½Π΅Π΅ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π·ΠΎΠ½Ρ‹ срабатывания.

Бпособ 1: ΠŸΠ΅Ρ€Π΅Ρ‚Π°ΡΠΊΠΈΠ²Π°Π½ΠΈΠ΅ Π² управляСмых Ρ„ΠΎΡ€ΠΌΠ°Ρ…

НаиболСС ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ β€” рСализация Drag & Drop Ρ‡Π΅Ρ€Π΅Π· события управляСмой Ρ„ΠΎΡ€ΠΌΡ‹. Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€ пСрСноса строк ΠΌΠ΅ΠΆΠ΄Ρƒ двумя Ρ‚Π°Π±Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ полями (Π’Π°Π±Π»ΠΈΡ†Π°1 ΠΈ Π’Π°Π±Π»ΠΈΡ†Π°2).

Π¨Π°Π³ 1. ДобавляСм ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ событий для Ρ‚Π°Π±Π»ΠΈΡ†. Π’ ΠΌΠΎΠ΄ΡƒΠ»Π΅ Ρ„ΠΎΡ€ΠΌΡ‹ прописываСм:

ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° Π’Π°Π±Π»ΠΈΡ†Π°1ΠΠ°Ρ‡Π°Π»ΠΎΠŸΠ΅Ρ€Π΅Ρ‚Π°ΡΠΊΠΈΠ²Π°Π½ΠΈΡ(Π­Π»Π΅ΠΌΠ΅Π½Ρ‚, Π”Π°Π½Π½Ρ‹Π΅ΠŸΠ΅Ρ€Π΅Ρ‚Π°ΡΠΊΠΈΠ²Π°Π½ΠΈΡ, Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Π°ΡΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°)

Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Π°ΡΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° = Π›ΠΎΠΆΡŒ;

Π”Π°Π½Π½Ρ‹Π΅ΠŸΠ΅Ρ€Π΅Ρ‚Π°ΡΠΊΠΈΠ²Π°Π½ΠΈΡ.Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒΠ”Π°Π½Π½Ρ‹Π΅(Π­Π»Π΅ΠΌΠ΅Π½Ρ‚.Π’Π΅ΠΊΡƒΡ‰ΠΈΠ΅Π”Π°Π½Π½Ρ‹Π΅);

ΠšΠΎΠ½Π΅Ρ†ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹

ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° Π’Π°Π±Π»ΠΈΡ†Π°2ΠžΠΊΠΎΠ½Ρ‡Π°Π½ΠΈΠ΅ΠŸΠ΅Ρ€Π΅Ρ‚Π°ΡΠΊΠΈΠ²Π°Π½ΠΈΡ(Π­Π»Π΅ΠΌΠ΅Π½Ρ‚, Π”Π°Π½Π½Ρ‹Π΅ΠŸΠ΅Ρ€Π΅Ρ‚Π°ΡΠΊΠΈΠ²Π°Π½ΠΈΡ, Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Π°ΡΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°)

Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Π°ΡΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° = Π›ΠΎΠΆΡŒ;

Если Π”Π°Π½Π½Ρ‹Π΅ΠŸΠ΅Ρ€Π΅Ρ‚Π°ΡΠΊΠΈΠ²Π°Π½ΠΈΡ.Π”Π°Π½Π½Ρ‹Π΅Π—Π°Π΄Π°Π½Ρ‹ Π’ΠΎΠ³Π΄Π°

НоваяБтрока = Π­Π»Π΅ΠΌΠ΅Π½Ρ‚.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ;

НоваяБтрока.Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ(Π”Π°Π½Π½Ρ‹Π΅ΠŸΠ΅Ρ€Π΅Ρ‚Π°ΡΠΊΠΈΠ²Π°Π½ΠΈΡ.ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒΠ”Π°Π½Π½Ρ‹Π΅);

ΠšΠΎΠ½Π΅Ρ†Π•ΡΠ»ΠΈ;

ΠšΠΎΠ½Π΅Ρ†ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹

Π¨Π°Π³ 2. НастраиваСм Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΎΠ±Ρ€Π°Ρ‚Π½ΡƒΡŽ связь. Для этого Π² событии ΠŸΠ΅Ρ€Π΅Ρ‚Π°ΡΠΊΠΈΠ²Π°Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΌΠ΅Π½ΡΡ‚ΡŒ курсор ΠΈΠ»ΠΈ ΠΏΠΎΠ΄ΡΠ²Π΅Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ Ρ†Π΅Π»Π΅Π²ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ:

ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° Π’Π°Π±Π»ΠΈΡ†Π°2ΠŸΠ΅Ρ€Π΅Ρ‚Π°ΡΠΊΠΈΠ²Π°Π½ΠΈΠ΅(Π­Π»Π΅ΠΌΠ΅Π½Ρ‚, Π”Π°Π½Π½Ρ‹Π΅ΠŸΠ΅Ρ€Π΅Ρ‚Π°ΡΠΊΠΈΠ²Π°Π½ΠΈΡ, Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Π°ΡΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°)

Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Π°ΡΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° = Π›ΠΎΠΆΡŒ;

Если Π”Π°Π½Π½Ρ‹Π΅ΠŸΠ΅Ρ€Π΅Ρ‚Π°ΡΠΊΠΈΠ²Π°Π½ΠΈΡ.Π”Π°Π½Π½Ρ‹Π΅Π—Π°Π΄Π°Π½Ρ‹ Π’ΠΎΠ³Π΄Π°

Π­Π»Π΅ΠΌΠ΅Π½Ρ‚.Подсказка ="ΠžΡ‚ΠΏΡƒΡΡ‚ΠΈΡ‚Π΅ для добавлСния";

Π­Π»Π΅ΠΌΠ΅Π½Ρ‚.Π¦Π²Π΅Ρ‚Π€ΠΎΠ½Π° = RGB(220, 240, 220); // Π‘Π²Π΅Ρ‚Π»ΠΎ-Π·Π΅Π»Ρ‘Π½Ρ‹ΠΉ

Π˜Π½Π°Ρ‡Π΅

Π­Π»Π΅ΠΌΠ΅Π½Ρ‚.Π¦Π²Π΅Ρ‚Π€ΠΎΠ½Π° = НСопрСдСлён;

ΠšΠΎΠ½Π΅Ρ†Π•ΡΠ»ΠΈ;

ΠšΠΎΠ½Π΅Ρ†ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹

Π­Ρ‚ΠΎΡ‚ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ для Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° Π·Π°Π΄Π°Ρ‡, Π½ΠΎ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅: Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ пСрСтаскиваниС Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ„ΠΎΡ€ΠΌΡ‹. НапримСр, нСльзя пСрСнСсти элСмСнт ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΡ‹ Π² Π΄Ρ€ΡƒΠ³ΡƒΡŽ.

Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ свойство ΠŸΠ΅Ρ€Π΅Ρ‚Π°ΡΠΊΠΈΠ²Π°Π½ΠΈΠ΅Π Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ установлСно Π² Π˜ΡΡ‚ΠΈΠ½Π° для ΠΎΠ±ΠΎΠΈΡ… элСмСнтов|

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π² Π”Π°Π½Π½Ρ‹Π΅ΠŸΠ΅Ρ€Π΅Ρ‚Π°ΡΠΊΠΈΠ²Π°Π½ΠΈΡ ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ссылка Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚)|

ΠžΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Π°ΡΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°Ρ…, Ссли ΠΎΠ½Π° ΠΌΠ΅ΡˆΠ°Π΅Ρ‚ Π»ΠΎΠ³ΠΈΠΊΠ΅|

ΠŸΡ€ΠΎΡ‚Π΅ΡΡ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ пСрСтаскиваниС Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡΡ… экрана (ΠΈΠ½ΠΎΠ³Π΄Π° Π·ΠΎΠ½Ρ‹ срабатывания ΡΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ)

-->

Бпособ 2: ИспользованиС HTML-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° для слоТных сцСнариСв

Если трСбуСтся пСрСтаскиваниС с Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ эффСктами (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠ΅ΠΉ ΠΈΠ»ΠΈ ΠΏΠΎΠ»ΡƒΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½Ρ‹ΠΌ Β«ΠΏΡ€ΠΈΠ·Ρ€Π°ΠΊΠΎΠΌΒ» элСмСнта), стандартныС срСдства 1Π‘ Π½Π΅ ΠΏΠΎΠ΄ΠΎΠΉΠ΄ΡƒΡ‚. Π’ Ρ‚Π°ΠΊΠΈΡ… случаях ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ встраиваниС HTML-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° Π² Ρ„ΠΎΡ€ΠΌΡƒ Ρ‡Π΅Ρ€Π΅Π· элСмСнт ПолСHTMLΠ”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°.

Алгоритм Ρ€Π°Π±ΠΎΡ‚Ρ‹:

  1. Π‘ΠΎΠ·Π΄Π°Ρ‘ΠΌ HTML-шаблон с JavaScript-ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ событий dragstart, dragover ΠΈ drop;
  2. Π—Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌ шаблон Π² ΠΏΠΎΠ»Π΅ ПолСHTMLΠ”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° Ρ‡Π΅Ρ€Π΅Π· ΠΌΠ΅Ρ‚ΠΎΠ΄ Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒΠ’Π΅ΠΊΡΡ‚;
  3. ОбмСниваСмся Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ 1Π‘ ΠΈ JavaScript Ρ‡Π΅Ρ€Π΅Π· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒΠ‘ΠΊΡ€ΠΈΠΏΡ‚ ΠΈ ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Π‘ΠΎΠ±Ρ‹Ρ‚ΠΈΡ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ минимального HTML-ΠΊΠΎΠ΄Π° для пСрСтаскивания:

<div id="drag1" draggable="true" ondragstart="drag(event)">ΠŸΠ΅Ρ€Π΅Ρ‚Π°Ρ‰ΠΈ мСня</div>

<div id="drop1" ondrop="drop(event)" ondragover="allowDrop(event)">Π‘Ρ€ΠΎΡΡŒ сюда</div>

<script>

function allowDrop(ev) { ev.preventDefault; }

function drag(ev) { ev.dataTransfer.setData("text", ev.target.id); }

function drop(ev) {

ev.preventDefault;

var data = ev.dataTransfer.getData("text");

ev.target.appendChild(document.getElementById(data));

// ΠžΡ‚ΠΏΡ€Π°Π²Π»ΡΠ΅ΠΌ событиС Π² 1Π‘

window.external.ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Π‘ΠΎΠ±Ρ‹Ρ‚ΠΈΡ("DropCompleted", data);

}

</script>

Π’ ΠΌΠΎΠ΄ΡƒΠ»Π΅ Ρ„ΠΎΡ€ΠΌΡ‹ добавляСм ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ:

ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° ПолСHTMLΠ”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Π‘ΠΎΠ±Ρ‹Ρ‚ΠΈΡ(Π˜ΠΌΡΠ‘ΠΎΠ±Ρ‹Ρ‚ΠΈΡ, ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹) Экспорт

Если Π˜ΠΌΡΠ‘ΠΎΠ±Ρ‹Ρ‚ΠΈΡ ="DropCompleted" Π’ΠΎΠ³Π΄Π°

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ("ΠŸΠ΅Ρ€Π΅Ρ‚Π°ΡΠΊΠΈΠ²Π°Π½ΠΈΠ΅ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΎ! ID элСмСнта:" + ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹);

// Π—Π΄Π΅ΡΡŒ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π² 1Π‘

ΠšΠΎΠ½Π΅Ρ†Π•ΡΠ»ΠΈ;

ΠšΠΎΠ½Π΅Ρ†ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° β€” полная свобода Π² ΠΎΡ„ΠΎΡ€ΠΌΠ»Π΅Π½ΠΈΠΈ (ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ CSS-Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ) ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° пСрСтаскивания ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ Ρ„ΠΎΡ€ΠΌΠ°ΠΌΠΈ. НСдостаток β€” ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½Π½Π°Ρ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π½Π° клиСнтскоС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, особСнно ΠΏΡ€ΠΈ большом количСствС элСмСнтов.

Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹Π΅ события управляСмых Ρ„ΠΎΡ€ΠΌ|

HTML-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ с JavaScript|

Π’Π½Π΅ΡˆΠ½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ (ActiveX,.NET)|

НС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ пСрСтаскиваниС-->

Бпособ 3: ΠŸΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹Π΅ Ρ‚Π΅Ρ…Π½ΠΈΠΊΠΈ с внСшними ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ

Для Π·Π°Π΄Π°Ρ‡, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΠΈΡ… высокой ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, пСрСтаскиваниС тысяч элСмСнтов Π² 1Π‘:ERP), стандартныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ слишком ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹ΠΌΠΈ. Π’ Ρ‚Π°ΠΊΠΈΡ… случаях ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ внСшниС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹:

  • πŸ”§ ActiveX-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, DragDropOCX);
  • πŸ–₯️ .NET-сборки с Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ Drag & Drop;
  • πŸ“¦ Π“ΠΎΡ‚ΠΎΠ²Ρ‹Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΎΡ‚ ΠΏΠ°Ρ€Ρ‚Π½Ρ‘Ρ€ΠΎΠ² 1Π‘ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π˜Π½Ρ„ΠΎΡΡ‚Π°Ρ€Ρ‚ ΠΈΠ»ΠΈ ΠšΠΎΠ΄Π΅Ρ€Π»Π°ΠΉΠ½).

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ .NET-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ для пСрСтаскивания Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈΠ· ΠΏΡ€ΠΎΠ²ΠΎΠ΄Π½ΠΈΠΊΠ° Windows Π² Ρ„ΠΎΡ€ΠΌΡƒ 1Π‘:

// Π’ ΠΌΠΎΠ΄ΡƒΠ»Π΅ Ρ„ΠΎΡ€ΠΌΡ‹

ΠŸΠ΅Ρ€Π΅ΠΌ ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°DragDrop;

ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° ΠŸΡ€ΠΈΠ‘ΠΎΠ·Π΄Π°Π½ΠΈΠΈΠΠ°Π‘Π΅Ρ€Π²Π΅Ρ€Π΅(ΠžΡ‚ΠΊΠ°Π·)

ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°DragDrop = Новый COMΠžΠ±ΡŠΠ΅ΠΊΡ‚("System.Windows.Forms.Panel");

ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°DragDrop.AllowDrop = Π˜ΡΡ‚ΠΈΠ½Π°;

// ΠŸΡ€ΠΈΠ²ΡΠ·Ρ‹Π²Π°Π΅ΠΌ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ событий (ΡƒΠΏΡ€ΠΎΡ‰Ρ‘Π½Π½ΠΎ)

ΠšΠΎΠ½Π΅Ρ†ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹

ΠšΡ€ΠΈΡ‚ΠΈΡ‡Π΅ΡΠΊΠ°Ρ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ: внСшниС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ административных ΠΏΡ€Π°Π² для установки Π½Π° клиСнтских ΠΌΠ°ΡˆΠΈΠ½Π°Ρ… ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ²Π°Ρ‚ΡŒ с антивирусами. ΠŸΠ΅Ρ€Π΅Π΄ Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΈΠ΅ΠΌ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ протСстируйтС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π½Π° тСстовом стСндС с Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΉ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΎΠΉ.

Как ΠΎΠ±ΠΎΠΉΡ‚ΠΈ ограничСния антивирусов ΠΏΡ€ΠΈ использовании Π²Π½Π΅ΡˆΠ½ΠΈΡ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚?

НСкоторыС антивирусы (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Kaspersky Endpoint Security) Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‚ ΠΏΠΎΠ΄Π³Ρ€ΡƒΠ·ΠΊΡƒ ActiveX ΠΈΠ»ΠΈ .NET-сборок Π² 1Π‘. РСшСния:

1. Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ для Ρ„Π°ΠΉΠ»Π° 1cv8.exe Π² настройках антивируса.

2. ΠŸΠΎΠ΄ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρƒ Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠΉ подписью (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‡Π΅Ρ€Π΅Π· SignTool ΠΎΡ‚ Microsoft).

3. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Β«Π±Π΅Π»Ρ‹ΠΉΒ» список Ρ€Π°Π·Ρ€Π΅ΡˆΡ‘Π½Π½Ρ‹Ρ… сборок Π² ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ°Ρ… бСзопасности Windows (gpedit.msc β†’ ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ β†’ АдминистративныС ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ β†’ ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Windows β†’.NET Framework).

Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ ошибки ΠΈ ΠΈΡ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ

Π”Π°ΠΆΠ΅ ΠΎΠΏΡ‹Ρ‚Π½Ρ‹Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°ΡŽΡ‚ΡΡ с ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ ΠΏΡ€ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Drag & Drop Π² 1Π‘. Π’ΠΎΡ‚ самыС распространённыС:

Ошибка ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π° РСшСниС
ΠŸΠ΅Ρ€Π΅Ρ‚Π°ΡΠΊΠΈΠ²Π°Π½ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° ΠΏΠ΅Ρ€Π²ΠΎΠΌ элСмСнтС НС сбрасываСтся Ρ„Π»Π°Π³ Π”Π°Π½Π½Ρ‹Π΅ΠŸΠ΅Ρ€Π΅Ρ‚Π°ΡΠΊΠΈΠ²Π°Π½ΠΈΡ послС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π”Π°Π½Π½Ρ‹Π΅ΠŸΠ΅Ρ€Π΅Ρ‚Π°ΡΠΊΠΈΠ²Π°Π½ΠΈΡ.ΠžΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ Π² событии ΠžΠΊΠΎΠ½Ρ‡Π°Π½ΠΈΠ΅ΠŸΠ΅Ρ€Π΅Ρ‚Π°ΡΠΊΠΈΠ²Π°Π½ΠΈΡ
Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ Β«Π·Π°Π»ΠΈΠΏΠ°Π΅Ρ‚Β» ΠΏΡ€ΠΈ пСрСтаскивании НС ΠΎΡ‚ΠΌΠ΅Π½Π΅Π½ΠΎ стандартноС ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°/Ρ„ΠΎΡ€ΠΌΡ‹ УстановитС Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Π°ΡΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° = Π›ΠΎΠΆΡŒ Π² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°Ρ…
Π”Π°Π½Π½Ρ‹Π΅ Ρ‚Π΅Ρ€ΡΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ быстром пСрСтаскивании Асинхронная ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° событий Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π–Π΄Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ ΠŸΡ€ΠΈΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ для синхронизации
НС Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ„ΠΎΡ€ΠΌΠ°ΠΌΠΈ ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ 1Π‘ Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ HTML-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ ΠΈΠ»ΠΈ внСшниС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹

ОсобоС Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΡƒΠ΄Π΅Π»ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ: ΠΏΡ€ΠΈ пСрСтаскивании Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΎΠ±ΡŠΡ‘ΠΌΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, строк Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ с 10 000 записями) ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Ρ‚ΡŒ зависаниС интСрфСйса. Π’ Ρ‚Π°ΠΊΠΈΡ… случаях:

  • πŸ“Š ΠžΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°ΠΉΡ‚Π΅ количСство ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ пСрСтаскиваСмых элСмСнтов;
  • πŸ”„ Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ„ΠΎΠ½ΠΎΠ²Ρ‹Π΅ задания для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ…;
  • πŸ—‘οΈ ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΊΠΎΠ΄ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΈΠ·Π±Π΅Π³Π°ΠΉΡ‚Π΅ Ρ†ΠΈΠΊΠ»ΠΎΠ² Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² событий).
πŸ’‘

ВсСгда тСстируйтС пСрСтаскиваниС Π½Π° слабых ΠΌΠ°ΡˆΠΈΠ½Π°Ρ… (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½Π° Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ машинС с 2 Π“Π‘ ΠžΠ—Π£). Π­Ρ‚ΠΎ выявит ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ Π΄ΠΎ внСдрСния Π² Π±ΠΎΠ΅Π²ΡƒΡŽ Π±Π°Π·Ρƒ.

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ для ΠΊΡ€ΡƒΠΏΠ½Ρ‹Ρ… Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ…

Π’ Π±Π°Π·Π°Ρ… с большим ΠΎΠ±ΡŠΡ‘ΠΌΠΎΠΌ Π΄Π°Π½Π½Ρ‹Ρ… (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² 1Π‘:Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ‚ΠΎΡ€Π³ΠΎΠ²Π»Π΅ΠΉ с 50 000 Π½ΠΎΠΌΠ΅Π½ΠΊΠ»Π°Ρ‚ΡƒΡ€Π½Ρ‹Ρ… ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΉ) стандартная рСализация Drag & Drop ΠΌΠΎΠΆΠ΅Ρ‚ Ρ‚ΠΎΡ€ΠΌΠΎΠ·ΠΈΡ‚ΡŒ. Π’ΠΎΡ‚ ΠΊΠ°ΠΊ этого ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ:

1. ΠžΡ‚Π»ΠΎΠΆΠ΅Π½Π½Π°Ρ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°: вмСсто Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎΠ³ΠΎ обновлСния Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΈ пСрСтаскивании ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ ΠžΡ‡Π΅Ρ€Π΅Π΄ΡŒΠ—Π°Π΄Π°Ρ‡:

ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° Π’Π°Π±Π»ΠΈΡ†Π°ΠžΠΊΠΎΠ½Ρ‡Π°Π½ΠΈΠ΅ΠŸΠ΅Ρ€Π΅Ρ‚Π°ΡΠΊΠΈΠ²Π°Π½ΠΈΡ(Π­Π»Π΅ΠΌΠ΅Π½Ρ‚, Π”Π°Π½Π½Ρ‹Π΅ΠŸΠ΅Ρ€Π΅Ρ‚Π°ΡΠΊΠΈΠ²Π°Π½ΠΈΡ)

Если Π”Π°Π½Π½Ρ‹Π΅ΠŸΠ΅Ρ€Π΅Ρ‚Π°ΡΠΊΠΈΠ²Π°Π½ΠΈΡ.Π”Π°Π½Π½Ρ‹Π΅Π—Π°Π΄Π°Π½Ρ‹ Π’ΠΎΠ³Π΄Π°

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹Π—Π°Π΄Π°Ρ‡ΠΈ = Новый Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π°("Π”Π°Π½Π½Ρ‹Π΅, Π¦Π΅Π»Π΅Π²ΠΎΠΉΠ­Π»Π΅ΠΌΠ΅Π½Ρ‚", Π”Π°Π½Π½Ρ‹Π΅ΠŸΠ΅Ρ€Π΅Ρ‚Π°ΡΠΊΠΈΠ²Π°Π½ΠΈΡ.ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒΠ”Π°Π½Π½Ρ‹Π΅, Π­Π»Π΅ΠΌΠ΅Π½Ρ‚);

ΠŸΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒΠ’ΠžΡ‡Π΅Ρ€Π΅Π΄ΡŒΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ("ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒΠŸΠ΅Ρ€Π΅Ρ‚Π°ΡΠΊΠΈΠ²Π°Π½ΠΈΠ΅", ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹Π—Π°Π΄Π°Ρ‡ΠΈ);

ΠšΠΎΠ½Π΅Ρ†Π•ΡΠ»ΠΈ;

ΠšΠΎΠ½Π΅Ρ†ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹

2. ΠšΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ…: Ссли ΠΏΠ΅Ρ€Π΅Ρ‚Π°ΡΠΊΠΈΠ²Π°ΡŽΡ‚ΡΡ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ элСмСнты (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, статусы Π·Π°ΠΊΠ°Π·ΠΎΠ²), Π·Π°Π³Ρ€ΡƒΠΆΠ°ΠΉΡ‚Π΅ ΠΈΡ… Π² ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ БоотвСтствиС ΠΏΡ€ΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠΈ Ρ„ΠΎΡ€ΠΌΡ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½Ρ‹Ρ… ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΉ ΠΊ Π±Π°Π·Π΅.

3. Π’ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ:

  • 🎨 ΠžΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΡŽ ΠΏΡ€ΠΈ пСрСтаскивании (свойство ΠΠ½ΠΈΠΌΠ°Ρ†ΠΈΡΠŸΠ΅Ρ€Π΅Ρ‚Π°ΡΠΊΠΈΠ²Π°Π½ΠΈΡ = Π›ΠΎΠΆΡŒ);
  • πŸ–ΌοΈ Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΡƒΠΏΡ€ΠΎΡ‰Ρ‘Π½Π½Ρ‹Π΅ ΠΈΠΊΠΎΠ½ΠΊΠΈ вмСсто Π΄Π΅Ρ‚Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ;
  • πŸ“ ΠžΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°ΠΉΡ‚Π΅ Π·ΠΎΠ½Ρƒ пСрСтаскивания (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… Π²ΠΈΠ΄ΠΈΠΌΠΎΠΉ области Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹).

Для Π±Π°Π· с Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅ΠΌ 100 000 элСмСнтов рассмотритС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ сСрвСрной ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ пСрСтаскивания: Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ Π½Π° сСрвСр, Π³Π΄Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ всС измСнСния, Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚. Π­Ρ‚ΠΎ сниТаСт Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ Π½Π° Ρ€Π°Π±ΠΎΡ‡ΠΈΠ΅ станции.

πŸ’‘

Если пСрСтаскиваниС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² Π²Π΅Π±-ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π΅ 1Π‘, ΠΎΡ‚Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚Π΅Π½ΠΈΠ΅ HTML-Ρ€Π΅ΡˆΠ΅Π½ΠΈΡΠΌ β€” ΠΎΠ½ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Π΅Π΅, Ρ‡Π΅ΠΌ управляСмыС Ρ„ΠΎΡ€ΠΌΡ‹, Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°Ρ….

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡

Π Π°Π·Π±Π΅Ρ€Ρ‘ΠΌ Ρ‚Ρ€ΠΈΡ‡Π½Ρ‹Ρ… сцСнария, Π³Π΄Π΅ пСрСтаскиваниС ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ:

1. РаспрСдСлСниС Π·Π°Π΄Π°Ρ‡ Π² 1Π‘:Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΎΠ±ΠΎΡ€ΠΎΡ‚:

ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠ΅Ρ€Π΅Ρ‚Π°ΡΠΊΠΈΠ²Π°Ρ‚ΡŒ Π·Π°Π΄Π°Ρ‡ΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°ΠΌΠΈ Β«Π’ Ρ€Π°Π±ΠΎΡ‚Π΅Β», «На ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ΅Β» ΠΈ Β«Π—Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΎΒ». РСализуСтся Ρ‡Π΅Ρ€Π΅Π· управляСмыС Ρ„ΠΎΡ€ΠΌΡ‹ с привязкой событий ΠΊ строкам Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹. ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ β€” ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ статуса Π·Π°Π΄Π°Ρ‡ΠΈ Π² Π±Π°Π·Π΅ ΠΏΡ€ΠΈ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠΈ пСрСтаскивания.

2. Π€ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π·Π°ΠΊΠ°Π·Π° Π² 1Π‘:Π ΠΎΠ·Π½ΠΈΡ†Π°:

ΠŸΡ€ΠΎΠ΄Π°Π²Π΅Ρ† пСрСтаскиваСт Ρ‚ΠΎΠ²Π°Ρ€Ρ‹ ΠΈΠ· ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° Π² ΠΊΠΎΡ€Π·ΠΈΠ½Ρƒ покупатСля. Π—Π΄Π΅ΡΡŒ Π²Π°ΠΆΠ½ΠΎ:

  • πŸ›’ ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ остатки Π½Π° складС;
  • πŸ’° АвтоматичСски ΠΏΠ΅Ρ€Π΅ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ сумму Π·Π°ΠΊΠ°Π·Π°;
  • πŸ“‹ Π€ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ (ΠΊΡ‚ΠΎ ΠΈ ΠΊΠΎΠ³Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΠ» Ρ‚ΠΎΠ²Π°Ρ€).

3. Настройка ΠΏΠ°Π½Π΅Π»Π΅ΠΉ инструмСнтов:

Администратор пСрСтаскиваСт ΠΊΠ½ΠΎΠΏΠΊΠΈ Π½Π° ΠΏΠ°Π½Π΅Π»ΠΈ для кастомизации интСрфСйса. Для этого ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ HTML-ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ с сохранСниСм ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Π² справочникС ΠΠ°ΡΡ‚Ρ€ΠΎΠΉΠΊΠΈΠ˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΠ°.

Π’ΠΎ всСх случаях Π½Π΅ Π·Π°Π±Ρ‹Π²Π°ΠΉΡ‚Π΅ ΠΏΡ€ΠΎ ΠΏΡ€Π°Π²Π° доступа: Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² 1Π‘:Π—Π£ΠŸ пСрСтаскиваниС отпусков ΠΌΠ΅ΠΆΠ΄Ρƒ сотрудниками Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ доступно Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠ°Π΄Ρ€ΠΎΠ²ΠΈΠΊΠ°ΠΌ.

Как Π·Π°ΠΏΡ€Π΅Ρ‚ΠΈΡ‚ΡŒ пСрСтаскиваниС для ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ?

Π’ ΠΌΠΎΠ΄ΡƒΠ»Π΅ Ρ„ΠΎΡ€ΠΌΡ‹ Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ ΠΏΡ€Π°Π² ΠΏΠ΅Ρ€Π΅Π΄ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ события:

ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° Π’Π°Π±Π»ΠΈΡ†Π°ΠΠ°Ρ‡Π°Π»ΠΎΠŸΠ΅Ρ€Π΅Ρ‚Π°ΡΠΊΠΈΠ²Π°Π½ΠΈΡ(Π­Π»Π΅ΠΌΠ΅Π½Ρ‚, Π”Π°Π½Π½Ρ‹Π΅ΠŸΠ΅Ρ€Π΅Ρ‚Π°ΡΠΊΠΈΠ²Π°Π½ΠΈΡ, Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Π°ΡΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°)

Если НЕ ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ.Π ΠΎΠ»ΠΈ.Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΡ‚("Администратор") Π’ΠΎΠ³Π΄Π°

Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Π°ΡΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° = Π›ΠΎΠΆΡŒ;

ΠŸΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅("Π£ вас Π½Π΅Ρ‚ ΠΏΡ€Π°Π² Π½Π° пСрСтаскиваниС!", 3);

Π’ΠΎΠ·Π²Ρ€Π°Ρ‚;

ΠšΠΎΠ½Π΅Ρ†Π•ΡΠ»ΠΈ;

// ΠžΡΡ‚Π°Π»ΡŒΠ½ΠΎΠΉ ΠΊΠΎΠ΄

ΠšΠΎΠ½Π΅Ρ†ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹

FAQ: ЧастыС вопросы ΠΏΠΎ ΠΏΠ΅Ρ€Π΅Ρ‚Π°ΡΠΊΠΈΠ²Π°Π½ΠΈΡŽ Π² 1Π‘

МоТно Π»ΠΈ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ пСрСтаскиваниС ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ Π±Π°Π·Π°ΠΌΠΈ 1Π‘?

НСт, стандартными срСдствами ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ это Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ. Однако ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±ΠΌΠ΅Π½ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Ρ‡Π΅Ρ€Π΅Π·:

  • πŸ“‚ Π’Π½Π΅ΡˆΠ½ΠΈΠ΅ Ρ„Π°ΠΉΠ»Ρ‹ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, JSON ΠΈΠ»ΠΈ XML);
  • 🌐 HTTP-сСрвисы (Ссли Π±Π°Π·Ρ‹ доступны ΠΏΠΎ сСти);
  • πŸ”Œ COM-соСдинСниС (для Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… Π±Π°Π·).

Π’ любом случаС потрСбуСтся ручная ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ… послС пСрСтаскивания.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ ΠΏΡ€ΠΈ пСрСтаскивании элСмСнты Β«ΠΏΡ€Ρ‹Π³Π°ΡŽΡ‚Β»?

Π­Ρ‚ΠΎ связано с:

  1. ΠΠ΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ рассчитанными ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°ΠΌΠΈ курсора (ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠŸΠΎΠ·ΠΈΡ†ΠΈΡΠšΡƒΡ€ΡΠΎΡ€Π°ΠœΡ‹ΡˆΠΈ);
  2. ΠšΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠΌ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ событий (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, с ΠŸΡ€ΠΈΠ˜Π·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ);
  3. Асинхронным ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ΠΌ интСрфСйса (Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΠžΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ послС измСнСния Π΄Π°Π½Π½Ρ‹Ρ…).

РСшСниС: ΠΎΡ‚Π»Π°Π΄ΡŒΡ‚Π΅ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ с Π²Ρ‹Π²ΠΎΠ΄ΠΎΠΌ Π² Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ порядок выполнСния ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ².

Как ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ порядок элСмСнтов послС пСрСтаскивания?

Для этого:

  1. Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ ΠΊΠΎΠ»ΠΎΠ½ΠΊΡƒ ΠŸΠΎΡ€ΡΠ΄ΠΎΠΊ (Ρ‚ΠΈΠΏ Число);
  2. ΠŸΡ€ΠΈ пСрСтаскивании обновляйтС значСния ΠŸΠΎΡ€ΡΠ΄ΠΎΠΊ для всСх задСйствованных строк;
  3. Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ ΠΏΠΎ этой ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ΅ ΠΏΡ€ΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π° для обновлСния порядка:

ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° ΠžΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒΠŸΠΎΡ€ΡΠ΄ΠΎΠΊ(Π’Π°Π±Π»ΠΈΡ†Π°)

ИндСкс = 1;

Для КаТдого Π‘Ρ‚Ρ€ΠΎΠΊΠ° Из Π’Π°Π±Π»ΠΈΡ†Π° Π¦ΠΈΠΊΠ»

Π‘Ρ‚Ρ€ΠΎΠΊΠ°.ΠŸΠΎΡ€ΡΠ΄ΠΎΠΊ = ИндСкс;

ИндСкс = ИндСкс + 1;

ΠšΠΎΠ½Π΅Ρ†Π¦ΠΈΠΊΠ»Π°;

ΠšΠΎΠ½Π΅Ρ†ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹

Π Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π»ΠΈ пСрСтаскиваниС Π² мобильном ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π΅ 1Π‘?

Частично. Π’ мобильном ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π΅:

  • βœ… ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ события ΠΠ°Ρ‡Π°Π»ΠΎΠŸΠ΅Ρ€Π΅Ρ‚Π°ΡΠΊΠΈΠ²Π°Π½ΠΈΡ ΠΈ ΠžΠΊΠΎΠ½Ρ‡Π°Π½ΠΈΠ΅ΠŸΠ΅Ρ€Π΅Ρ‚Π°ΡΠΊΠΈΠ²Π°Π½ΠΈΡ;
  • ❌ НСт Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ связи (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Β«Ρ‚Π΅Π½ΠΈΒ» элСмСнта);
  • ⚠️ Π’ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΈΠ·-Π·Π° touch-интСрфСйса (рСкомСндуСтся ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Ρ‚ΡŒ Π·ΠΎΠ½Ρ‹ срабатывания).

Для слоТных сцСнариСв Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ HTML-Ρ„ΠΎΡ€ΠΌΡ‹ с Π°Π΄Π°ΠΏΡ‚ΠΈΠ²Π½Ρ‹ΠΌ Π΄ΠΈΠ·Π°ΠΉΠ½ΠΎΠΌ.

Как ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ пСрСтаскиваниС ΠΏΠΎ Π½Π°ΠΆΠ°Ρ‚ΠΈΡŽ Π½Π° Esc?

Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ события ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°ΠΠ°ΠΆΠ°Ρ‚ΠΈΡΠšΠ»Π°Π²ΠΈΡˆΠΈ для Ρ„ΠΎΡ€ΠΌΡ‹:

ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° Π€ΠΎΡ€ΠΌΠ°ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°ΠΠ°ΠΆΠ°Ρ‚ΠΈΡΠšΠ»Π°Π²ΠΈΡˆΠΈ(Клавиша, Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Π°ΡΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°)

Если Клавиша.Код = ΠšΠΎΠ΄Π’Πš.Escape И Π”Π°Π½Π½Ρ‹Π΅ΠŸΠ΅Ρ€Π΅Ρ‚Π°ΡΠΊΠΈΠ²Π°Π½ΠΈΡ.Π”Π°Π½Π½Ρ‹Π΅Π—Π°Π΄Π°Π½Ρ‹ Π’ΠΎΠ³Π΄Π°

Π”Π°Π½Π½Ρ‹Π΅ΠŸΠ΅Ρ€Π΅Ρ‚Π°ΡΠΊΠΈΠ²Π°Π½ΠΈΡ.ΠžΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ;

Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Π°ΡΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° = Π›ΠΎΠΆΡŒ;

ΠšΠΎΠ½Π΅Ρ†Π•ΡΠ»ΠΈ;

ΠšΠΎΠ½Π΅Ρ†ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹