2012-01-30 4 views
0

Передача элементов RadListBox из источника в место назначения срабатывает, даже когда я нажимаю кнопку на странице. Как остановить это?Telerik RadListBox Control запускает событие, когда другая кнопка нажата в AJAX включенном ASP.NET Page

Действия по воспроизведению проблемы - загрузка страницы. Нажмите кнопку. См. Количество элементов для полей списка внутри панели обновления AJAX. Он будет отображаться правильно - 7 (источник) и 0 (цель) соответственно. Переместите один элемент из источника в целевой RadListBox. Нажмите кнопку еще раз - она ​​показывает 6 (источник) и 1 (цель) в первый раз. Затем снова нажмите кнопку - он показывает 5 (исходный) и 2 (целевой) .. затем нажмите кнопку. Он показывает 4 (источник) и 3 (цель). В пользовательском интерфейсе ничего не меняется.

Я считаю, что передача события от источника к цели срабатывает, даже когда я нажимаю кнопку. Как остановить событие Transfer при нажатии кнопки?

На моей странице мне нужно обновить панель обновления AJAX, но я не хочу, чтобы элементы в RadListBox менялись одновременно.

ASPX страницы -

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="TestRadListBox.WebForm1" %> 

<%@ Register Assembly="Telerik.Web.UI" Namespace="Telerik.Web.UI" TagPrefix="telerik" %> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title></title> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <telerik:RadScriptManager ID="RadScriptManager1" runat="server"> 
    </telerik:RadScriptManager> 
    <div> 
     <table> 
      <tr> 
       <th colspan="2">Move 1 Item from Left to Right and then click the button below and see the Item Counts</th> 
      </tr> 
      <tr> 
       <td> 
        <telerik:RadListBox ID="SourceRadListBox" runat="server" Height="100px" Width="200px" 
         AllowTransfer="true" TransferToID="TargetRadListBox"> 
        </telerik:RadListBox> 
       </td> 
       <td> 
        <telerik:RadListBox runat="server" ID="TargetRadListBox" Height="100px" Width="175px" 
         AllowReorder="true" /> 
       </td> 
      </tr> 
     </table> 
    </div> 
    <br/> 
    <div> 
     Time OUTSIDE Update Panel : <asp:Label ID="timeOutsideLabel" runat="server"/> 
    </div> 
    <br/> 
    <div align="left"> 
     <asp:Button ID="addRuleButton" runat="server" Text="Click To Refresh The Time Below Inside AJAX Update Panel" 
      onclick="addRuleButton_Click" /> 
    </div> 
    <br/> 
    <div> 
     <asp:UpdatePanel ID="UpdatePanel1" runat="server"> 
      <ContentTemplate> 
      <table border = "2"> 
       <tr><th>AJAX Update Panel</th></tr> 
       <tr><td>Time INSIDE Update Panel : <asp:Label ID="timeInsideLabel" runat="server"/></td></tr> 
       <tr><td>Item Count in Source RadListBox : <asp:Label ID="srcCount" runat="server"/></td></tr> 
       <tr><td>Item Count in Target RadListBox : <asp:Label ID="tarCount" runat="server"/></td></tr> 
      </table> 
      </ContentTemplate> 
      <Triggers> 
       <asp:AsyncPostBackTrigger ControlID="addRuleButton" EventName="Click" /> 
      </Triggers> 
     </asp:UpdatePanel> 
    </div> 
    </form> 
</body> 
</html> 

C# код позади -

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using Telerik.Web.UI; 

namespace TestRadListBox 
{ 
    public partial class WebForm1 : System.Web.UI.Page 
    { 
     protected void Page_Load(object sender, EventArgs e) 
     { 
      if (!IsPostBack) 
      { 
       List<string> week = new List<string> { "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" }; 
       SourceRadListBox.DataSource = week; 
       SourceRadListBox.DataBind(); 
       string timenow = DateTime.Now.ToLongTimeString(); 
       timeInsideLabel.Text = timenow; 
       timeOutsideLabel.Text = timenow; 
      } 
     } 

     protected void addRuleButton_Click(object sender, EventArgs e) 
     { 
      timeInsideLabel.Text = DateTime.Now.ToLongTimeString(); 
      srcCount.Text = SourceRadListBox.Items.Count.ToString(); 
      tarCount.Text = TargetRadListBox.Items.Count.ToString(); 
     } 
    } 
} 

ответ