2010-08-14 23 views
0

Je suis ayant deux zone de liste qui effectuent ajouter fonctionnalité de supprimer des éléments qui sont contrôlés par quatre boutons et o chaque clic de bouton il se trouve être poster, mais je ne veux pas qu'il scintille pour lequel je suis l'aide du panneau de mise à jour comme celui-ci, mais il fait encore après wats retour mal avec cela me expliquer cepanneau de mise à jour ne fonctionne pas

<asp:UpdatePanel ID="button" runat="server" UpdateMode="Always"> 
    <ContentTemplate> 
     <asp:Button ID="ButtonAdd" runat="server" Text=">" OnClick="ButtonAdd_Click" Width="50px"/><br /> 
     <asp:Button ID="ButtonRemove" runat="server" Text="<" OnClick="ButtonRemove_Click" Width="50px"/><br /> 
     <asp:Button ID="ButtonAddAll" runat="server" Text =">>>" OnClick="ButtonAddAll_Click" Width="50px"/><br />  
     <asp:Button ID="ButtonRemoveAll" runat="server" Text ="<<<" OnClick="ButtonRemoveAll_Click" Width="50px"/> 
    </ContentTemplate> 
</asp:UpdatePanel> 

Répondre

8

J'ai écrit une exemple rapide qui fonctionne. Vous n'avez pas besoin de vos boutons dans le UpdatePanel. Vous avez seulement besoin du ListBox car ce sont les seuls contrôles en cours d'actualisation. Configurez le Trigger pour le UpdatePanel provoquera les actualisations sans le 'scintillement'.

code ASPX:

<asp:ScriptManager ID="ScriptManager1" runat="server" /> 
<div> 
    <asp:Button ID="ButtonAdd" runat="server" Text=">" OnClick="ButtonAdd_Click" Width="50px"/><br /> 
    <asp:Button ID="ButtonRemove" runat="server" Text="<" OnClick="ButtonRemove_Click" Width="50px"/><br /> 
    <asp:Button ID="ButtonAddAll" runat="server" Text =">>>" OnClick="ButtonAddAll_Click" Width="50px"/><br />  
    <asp:Button ID="ButtonRemoveAll" runat="server" Text ="<<<" OnClick="ButtonRemoveAll_Click" Width="50px"/>  
    <asp:UpdatePanel ID="button" runat="server" UpdateMode="Always"> 
     <Triggers> 
      <asp:AsyncPostBackTrigger ControlID="ButtonAdd" EventName="Click" /> 
      <asp:AsyncPostBackTrigger ControlID="ButtonRemove" EventName="Click" /> 
      <asp:AsyncPostBackTrigger ControlID="ButtonAddAll" EventName="Click" /> 
      <asp:AsyncPostBackTrigger ControlID="ButtonRemoveAll" EventName="Click" /> 
     </Triggers> 
     <ContentTemplate> 
      <asp:ListBox ID="ListBox1" runat="server"></asp:ListBox> 
      &nbsp;&nbsp; 
      <asp:ListBox ID="ListBox2" runat="server"></asp:ListBox> 
     </ContentTemplate> 
    </asp:UpdatePanel> 
</div> 

cs (behind) Code:

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!IsPostBack) 
    { 
     ListBox1.Items.Add(new ListItem("Test1", "1")); 
     ListBox1.Items.Add(new ListItem("Test2", "2")); 
     ListBox1.Items.Add(new ListItem("Test3", "3")); 
     ListBox1.Items.Add(new ListItem("Test4", "4")); 
     ListBox1.Items.Add(new ListItem("Test5", "5")); 
    } 
} 

protected void ButtonRemove_Click(object sender, EventArgs e) 
{ 
    if (ListBox2.SelectedItem != null) 
    { 
     ListBox1.Items.Add(ListBox2.SelectedItem); 
     ListBox2.Items.RemoveAt(ListBox2.SelectedIndex); 
     ListBox2.ClearSelection(); 
     ListBox1.ClearSelection(); 
    } 
} 

protected void ButtonAdd_Click(object sender, EventArgs e) 
{ 
    if (ListBox1.SelectedItem != null) 
    { 
     ListBox2.Items.Add(ListBox1.SelectedItem); 
     ListBox1.Items.RemoveAt(ListBox1.SelectedIndex); 
     ListBox1.ClearSelection(); 
     ListBox2.ClearSelection(); 
    } 
} 

J'ai testé et il fonctionne. J'ai seulement mis en œuvre 2 des Button pour présenter un exemple complet.

+1

2 ans plus tard et il est la réponse exacte que je avais besoin! XD – boolean

+0

@boolean Que diriez-vous d'un upvote alors :) – Kelsey

+0

Mon mauvais, j'étais trop excité en courant et en utilisant le code. Upvoted :) – boolean

0

Ajouter le asp:ListBox à la ContentTemplate de votre asp:UpdatePanel, ou ajouter une nouvelle asp:UpdatePanel et l'ajouter à son ContentTemplate. Le contrôle ne sera pas mis à jour à l'aide d'une publication asynchrone si elle n'est pas placée dans un asp:UpdatePanel.

Avec le code ci-dessous des extraits du nouveau ajouté listBox seront mis à jour avec du nouveau contenu en utilisant un postback asynchrone:

Page.aspx:

<asp:UpdatePanel ID="button" runat="server" UpdateMode="Always"> 
    <ContentTemplate> 
     <asp:Button ID="ButtonAdd" runat="server" Text=">" OnClick="ButtonAdd_Click" Width="50px" /><br /> 
     <asp:Button ID="ButtonRemove" runat="server" Text="<" OnClick="ButtonRemove_Click" 
      Width="50px" /> 
     <br /> 
     <asp:Button ID="ButtonAddAll" runat="server" Text=">>>" OnClick="ButtonAddAll_Click" 
      Width="50px" /> 
     <br /> 
     <asp:Button ID="ButtonRemoveAll" runat="server" Text="<<<" OnClick="ButtonRemoveAll_Click" 
      Width="50px" /> 

     <asp:ListBox runat="server" ID="listBox"></asp:ListBox> 
    </ContentTemplate> 
</asp:UpdatePanel> 

gestionnaire d'événements Exemple dans le fichier code-behind , Page.aspx.cs:

protected void ButtonAddAll_Click(object sender, EventArgs e) 
{ 
    listBox.DataSource = new List<string>() { "Test" }; 
    listBox.DataBind(); 
} 
+0

je l'ai déjà mis tout mon code dans le panneau de mise à jour, mais encore scintiller je ne sous position y donc – NoviceToDotNet

-1
<asp:UpdatePanel ID="button" runat="server" UpdateMode="Always"> 
    <ContentTemplate> 
     <asp:Button ID="ButtonAdd" runat="server" Text=">" OnClick="ButtonAdd_Click" Width="50px" /><br /> 
     <asp:Button ID="ButtonRemove" runat="server" Text="<" OnClick="ButtonRemove_Click" 
      Width="50px" /> 
     <br /> 
     <asp:Button ID="ButtonAddAll" runat="server" Text=">>>" OnClick="ButtonAddAll_Click" 
      Width="50px" /> 
     <br /> 
     <asp:Button ID="ButtonRemoveAll" runat="server" Text="<<<" OnClick="ButtonRemoveAll_Click" 
      Width="50px" /> 

     <asp:ListBox runat="server" ID="listBox"></asp:ListBox> 
    </ContentTemplate> 
</asp:UpdatePanel>