begin process at 2012 02 08 21:06:40
  Trouver un code source :
 
dans
 
Accueil > Forum > 

ASP.NET

 > 

Web 2.0

 > 

Ajax

 > 

update panel dans repeater


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

update panel dans repeater

mercredi 5 décembre 2007 à 16:17:55 | update panel dans repeater

rastali

Bonjour,

alors j'ai un petit probleme avec mon appli web. Je travaille avec le framework 2.0 sous visual studio 2005.
J'ai un écran qui affiche un repeater avec des données récupérées de ma base oracle. Dans ce repeater j'affiche un tableau, et une des colonnes contient un textbox et deux boutons, l'un permettant d'incrémenter la valeur numérique afficher dans le textbox de 1, et l'autre permettant de décrémenter la valeur. Tout cela fonctionne parfaitement bien, mais a chaque click sur l'un des boutons, c'est toute la page qui se rafraichit, et c'a fait un peu mal aux yeux a force :D.
Je souhaitais donc que le click sur mon bouton ne me rafraichisse que mon text box. Pour cela je me suis tourné vers ajax et l'update panel qui me semblait etre une bonne solution, sauf qu'au sein de mon repeater, ca ne fonctionne pas!
1-Ma premiere question est donc toute simple, est-ce possible d'intégrer un update panel dans un repeater? Et si oui, avez vous un exemple? ou si non, existe-t-il un autre moyen de ne raffraichir que mon textbox?
Ensuite j'ai une autre question concernant ajax plus généralement.
2-Mon projet est un projet asp.net site web classic, est-ce que je peux en ajoutant les composants ajax utilisé du ajax dans mon code, ou dois-je forcement créer un projet asp.net ajax-enabled website ?
mercredi 5 décembre 2007 à 19:48:49 | Re : update panel dans repeater

jesusonline

Membre Club Administrateur CodeS-SourceS
Bonjour,

1. Oui, c'est possible ! Mais faut binder correctement ou utiliser le viewstate, comment bind tu ton repeater ? utilises tu le viewstate ? as tu un message d'erreur ? que se passe t'il actuellement ?

2. Un site web ASP.net Ajax Enabled n'est rien d'autre qu'un site web classique avec un web.config un poil modifié :-)


Cyril - MSP - MCPD ASP.net & MCTS SQL - Consultant indépendant
jeudi 6 décembre 2007 à 10:23:42 | Re : update panel dans repeater

rastali

salut, et merci de ta réponse ^^
alors pour la question 2, c'est bon j'ai réussi a adapter mon web.config en m'inspirant d'un web.config d'un projet ajax. J'arrive donc sur une page de test, et sans repeater, à mettre a jour uniquement mon textbox.
Par contre, avec le repeater j'ai un probleme, directement a la compilation :s .

donc mon code aspx:

<

asp:RepeaterID="rptClasses"runat="server"OnItemCommand="rptClassesItemCommand"EnableViewState="false">
<HeaderTemplate>
<tablestyle="border-collapse:collapse; background-color:#BBBBBB;">
<tr>
<tdstyle="border:1px solid #000000; width:100px"><b>Code</b></td>
<tdstyle="border:1px solid #000000; width:100px"><b>Description</b></td>
<tdstyle="border:1px solid #000000; width:120px"><b>Valeur</b></td>
</tr>
</table>
</HeaderTemplate>
<ItemTemplate>
<tablestyle="border-collapse:collapse; background-color:#fbfcfd;">
<tr>
<tdstyle="border:1px solid #000000; width:100px"><center><asp:LabelID="lblCode"runat="server"Text='<%# DataBinder.Eval(Container.DataItem, "CODE") %>'></asp:Label></center></td>
<tdstyle="border:1px solid #000000; width:100px"><asp:LabelID="lblDescription"runat="server"Text='<%# DataBinder.Eval(Container.DataItem, "DESCRIPTION") %>'></asp:Label></td>
<tdstyle="border:1px solid #000000; width:120px">
<asp:UpdatePanelID="UP1"runat="server">
<ContentTemplate>
<
fieldset>
<asp:TextBoxrunat="server"ID="tbValeur"Width="50"Text='<%# DataBinder.Eval(Container.DataItem, "Valeur") %>'></asp:TextBox>
<asp:Buttonid="btnPlus"runat="server"CommandName='<%# ACTIONPLUS %>'CommandArgument='<%# DataBinder.Eval(Container.DataItem, "CODE") %>'Text="+"/>
<asp:Buttonid="btnMoins"runat="server"CommandName='<%# ACTIONMOINS %>'CommandArgument='<%# DataBinder.Eval(Container.DataItem, "CODE") %>'Text="-"/>
</fieldset>
</
ContentTemplate>
</asp:UpdatePanel>
</td>
</tr>
</table>
</ItemTemplate>
<AlternatingItemTemplate>
<tablestyle="border-collapse:collapse; background-color:#d7e4ed;">
<tr>
<tdstyle="border:1px solid #000000; width:100px"><center><asp:LabelID="lblCode"runat="server"Text='<%# DataBinder.Eval(Container.DataItem, "CODE") %>'></asp:Label></center></td>
<tdstyle="border:1px solid #000000; width:100px"><asp:LabelID="lblDescription"runat="server"Text='<%# DataBinder.Eval(Container.DataItem, "DESCRIPTION") %>'></asp:Label></td>
<tdstyle="border:1px solid #000000; width:120px">
<asp:UpdatePanelID="UP1"runat="server">
<ContentTemplate>
<
fieldset>
<asp:TextBoxrunat="server"ID="tbValeur"Width="50"Text='<%# DataBinder.Eval(Container.DataItem, "Valeur") %>'></asp:TextBox>
<asp:Buttonid="btnPlus"runat="server"CommandName='<%# ACTIONPLUS %>'CommandArgument='<%# DataBinder.Eval(Container.DataItem, "CODE") %>'Text="+"/>
<asp:Buttonid="btnMoins"runat="server"CommandName='<%# ACTIONMOINS %>'CommandArgument='<%# DataBinder.Eval(Container.DataItem, "CODE") %>'Text="-"/>
</fieldset>
</
ContentTemplate>
</asp:UpdatePanel>
</td>
</tr>
</table>
</AlternatingItemTemplate>
</asp:Repeater>

et mon code cs:

privatevoid InitRptClasses()
{
try
{
//on recupere les donn,es de la base
DataTable DtClasses= newDataTable();
DtClasses= ClsClasse.SelectClasse().Tables[0];

//alimentation du repeater
rptClasses.DataSource = DtClasses;
rptClasses.DataBind();
}
catch (Exception ex)
{
Util.Log("Erreur : InitRptClasses : " + ex.Message);
}
}

publicvoid rptClassesItemCommand(object source, System.Web.UI.WebControls.RepeaterCommandEventArgs e)
{
string code = e.CommandArgument.ToString();
if (e.CommandName == ACTIONPLUS)
{
ValeurPlus(code);
}

if (e.CommandName == ACTIONMOINS)
{
ValeurMoins(code);
}
}

privatevoid ValeurPlus(string baumuster6)
{
try
{
foreach (RepeaterItem Item in rptClasses.Items)
{
if (((Label)Item.FindControl("lblCode")).Text.ToString() == code)
{
TextBoxtbValeur= (TextBox)Item.FindControl("tbValeur");
if (tbValeur.Text != "")
{
if (IsDouble(tbValeur.Text))
{
Double valeur= Convert.ToDouble(tbValeur.Text) + 0.5;
tbValeur.Text = valeur.ToString();
}
}
}
}
}
catch (Exception ex)
{

Util.Log("ValeurPlus : "+ ex.Message);
}
}

La fonction ValeurMoins est identique à ValeurPlus mais elle soustrait 0,5.


jeudi 6 décembre 2007 à 10:41:37 | Re : update panel dans repeater

rastali

Ah et j'ai oublié les messages d'erreur, donc lors de la compilation j'ai ces erreurs:

Le type 'Page1' contient déjà une définition pour 'tbValeur'
Le type 'Page1' contient déjà une définition pour 'btnPlus'  
Le type 'Page1' contient déjà une définition pour 'btnMoins' 
Le type 'ASP.page1_aspx' définit déjà un membre appelé '__BuildControltbValeur' avec les mêmes types de paramètres 
Le type 'ASP.page1_aspx' définit déjà un membre appelé '__DataBindingtbValeur' avec les mêmes types de paramètres 
Le type 'ASP.page1_aspx' définit déjà un membre appelé '__BuildControlbtnPlus' avec les mêmes types de paramètres 
Le type 'ASP.page1_aspx' définit déjà un membre appelé '__DataBindingbtnPlus' avec les mêmes types de paramètres 
Le type 'ASP.page1_aspx' définit déjà un membre appelé '__BuildControlbtnMoins' avec les mêmes types de paramètres  
Le type 'ASP.page1_aspx' définit déjà un membre appelé '__DataBindingbtnMoins' avec les mêmes types de paramètres 

Et si je retire le alternatinItemTemplate, j'ai ces messages d'erreurs:

'System.Web.UI.Control' ne contient pas de définition pour 'DataItem' 
'System.Web.UI.Control' ne contient pas de définition pour 'DataItem' 
'System.Web.UI.Control' ne contient pas de définition pour 'DataItem' 

correspondant aux lignes des elements contenus dans l'update panel, a savoir le textbox et les deux boutons.

jeudi 6 décembre 2007 à 11:25:52 | Re : update panel dans repeater

rastali

Réponse acceptée !
Yo!

en fait j'ai trouvé la réponse moi même
Je placais mal l'updatePanel, j'ai fait l'erreur de vouloir le mettre autour du champs a mettre a jour alors qu'en fait il fallait le mettre autour du repeater.
Donc en gros il faut faire:

<asp:UpdatePanelID="UP1"runat="server">
<ContentTemplate
>
<
fieldset>
<asp:RepeaterID="rptClasses"runat="server"OnItemCommand="rptClassesItemCommand"EnableViewState="false">
<HeaderTemplate>
...........
</
HeaderTemplate>
<ItemTemplate>
..........
</
ItemTemplate>
<AlternatingItemTemplate>
..........
</AlternatingItemTemplate>
</asp:Repeater>
</fieldset>
</
ContentTemplate>
</asp:UpdatePanel>

et ca fonctionne !!!
dimanche 9 décembre 2007 à 19:53:28 | Re : update panel dans repeater

jesusonline

Membre Club Administrateur CodeS-SourceS
Bonjour,

en mettant ton updatepanel autour de ton repeater, tu vas rafraichir tous le repeater et pas seulement un item. A mon avis le problème que tu as vient des id de tes controles, il semble que tu as des id dupliqués pour 2 textbox différentes.

J'ai déjà mis des updatepanels dans une itemtemplate de repeater et il n'y a pas de problème, il faut juste faire attention à bien reconstruire les items comme il faut si on le construit de facon peu orthodoxe ;-)


Cyril - MSP - MCPD ASP.net & MCTS SQL - Consultant indépendant


Cette discussion est classée dans : textbox, ajax, panel, update, repeater


Répondre à ce message

Sujets en rapport avec ce message

update dans une base en ASP [ par Speedy ] Speedysalut les amis,j'ai plusieurs problèmes en ASP :Je récupère des valeurs d'une tables dans un textbox qui se trouve dans un tableau.Plus il y a d Panel se remplissant dynamiquement [ par systemic_anomaly ] Bonjour tt le monde,J'ai un panel qui au page load est composé sur une ligne horizontale de plusieurs textbox et labels et un bouton "Ajouter" (qui pr Recupération d'un textbox avec asp:repeater [ par rtouillet ] Bonjour,J'ai un petit problème ASP.net, j'aimerais savoir comment récupérer, lors d'un clique sur un bouton et sur la page qui est appelée, la valeur  CommandArgument et textbox, le tout dans un repeater [ par cboulas ] Salut à tous, Voilà j'ai un repeater lié à ma database, ce repeater affiche une boutique en lignes, j'ai donc une ligne pour chaque enregistrement, l' repeater avec textbox, acceder au contenu apres validation [ par Dyr3e ] bonjour, je parcours les textbox de mon repeater apres que l'utilisateur les ai rempli  et valider par un bouton submit , et j'aimerais pouvoir recupe TextBox ajax [ par Solution ] Bonjour,j'ai une méthode qui traite le contenu du textbox. j'ai utillisé ajax pour l'appel ce la méthode dans javascript tous ca va sauf que le conten plusieur Update panel sur la meme page [ par mnmall ] Bonjour,J'ai le code suivant :                                             </a Update Panel Clignotement [ par Myke ] BonjourDans une page web j'utilise un Controle Update Panel. Le controle fonctionne très bien sauf pour une chose. Dans mon Update Panel chez un DropD button dans un repeater [ par fguigui ] Bonjour à tous,Dans une webform j'ai un Repeater à l'intérieur duquel j'ai des textbox, label et button du genre :        <ctrl:RepeatBudgets ID="Repe TabPanel [ par theVince63 ] Bonjour,voila j'ai un probléme avec le chargment des tabpanels .  J'ai mis en place une page qui comporte un update panel dans lequel on trouve des co


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,515 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales