Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2803 connectés 

  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  [ASP.NET] Datagridview et Radiobuttonlist

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[ASP.NET] Datagridview et Radiobuttonlist

n°1893292
fatloui
I'll be back
Posté le 09-06-2009 à 16:50:53  profilanswer
 

Bonjour,
 
J'ai un petit probleme.
 
J'ai créé un Datagridview dans lequel j'ai ajouté une colonne contenant une RadiobuttonList de 3 Radiobuttons.
 
Maintenant, je veux que les radiobutton soient selectionnés en fonction de la valeur d'une colonne d'une table d'une base de données SQL Server et que lorsque que le user valide, la bdd soit mise à jour
 
donc d'un coté j'ai ma page .aspx avec mes radio buttons et de l'autre ma bdd
le probleme c'est que j'arrive pas a acceder aux radiobutton dans la gridview. (et donc à faire la liaison entre les la bdd et la page .aspx)
 
Je code en ASP.NET/c# sous framework .NET 2.0
Lorsque je veux acceder a la datagridview dans le fichier .cs, je peux
mais quand je veux acceder au radiobutton, impossible !  
 
je pensais utiliser la methode FindControl(string) pour acceder a ma radiobuttonliste mais comment manipuler ce control pour verifier quel radiobutton est selectionné?
 
Je sais pas si je suis trés clair
Merci de votre aide


Message édité par fatloui le 01-07-2009 à 11:18:50
mood
Publicité
Posté le 09-06-2009 à 16:50:53  profilanswer
 

n°1900961
fatloui
I'll be back
Posté le 01-07-2009 à 11:19:00  profilanswer
 

vu que je n'ai pas resolu mon problème, je retente un dernier petit up

n°1901047
fatloui
I'll be back
Posté le 01-07-2009 à 13:44:36  profilanswer
 

Merci Fred82, tu me sauves la vie aujourd'hui.
 
Je vais me pencher la dessus et je te tiendrais au courant ^^

n°1903321
moi23372
Posté le 07-07-2009 à 18:57:32  profilanswer
 

tu peux récupérer normalement le controle Radio par la propriété Control de chaque cellule en question.


---------------
quand un homme raisonne mal c'est qu'il n'a pas les données pour raisonner mieux (diderot)
n°1903481
fatloui
I'll be back
Posté le 08-07-2009 à 10:59:14  profilanswer
 

j'ai du mal à comprendre le principe du control (le msdn est pas tres explicite)

n°1903542
ov3rflow
How Do You Do, Fellow Kids?
Posté le 08-07-2009 à 12:13:22  profilanswer
 

A mon avis si tu utilise une GridView, il faudra que tu utilse des TemplateField dans la définition des colonnes.
 
Puis Binder les champs de ta source avec un scriplet du genre:
      <asp:RadioButton id="StatutOK" Runat="server" Checked='<%# (bool)DataBinder.Eval(Container.DataItem, "Champbooleen" ) %>'   AutoPostBack="True"  OnCheckedChanged="ClickRadioButton" >
      </asp:RadioButton>


Message édité par ov3rflow le 08-07-2009 à 12:14:04
n°1903573
fatloui
I'll be back
Posté le 08-07-2009 à 13:22:00  profilanswer
 

oui mais ca ca fonctionne dans le cas d'un radiobutton mais pas pour une radiobuttonlist :(

Code :
  1. <asp:RadioButtonList ID="Etat" CellSpacing="10" RepeatDirection="Horizontal"
  2.            runat="server" OnSelectedIndexChanged="Check_Radio">
  3.            <asp:ListItem Selected="True"></asp:ListItem>
  4.            <asp:ListItem ></asp:ListItem>
  5.            <asp:ListItem></asp:ListItem>   
  6.            </asp:RadioButtonList>


 
le probleme c'est que dans ma fonction "check_radio" je vois pas comme acceder au radiobutton (vu qu'ils ont pas de nom)

n°1903605
fatloui
I'll be back
Posté le 08-07-2009 à 14:22:23  profilanswer
 

ben en fait j'arrive pas a acceder à Etat car il est dans une gridview
 
je pensais que GriView1.Etat aurait marché mais en fait non

n°1903657
fatloui
I'll be back
Posté le 08-07-2009 à 15:26:12  profilanswer
 

ah ok.
Je teste ca
 
Merci ^^

n°1904301
bpoujol
Posté le 10-07-2009 à 10:10:40  profilanswer
 

Tu as un évènement onRowDataBound(sender,e) lié à ton contrôle DataGridView.
 

Code :
  1. protected void dlDocumentK_ItemDataBound(object sender, DataListItemEventArgs e)
  2. {
  3.             Label lbID = (Label)e.Item.FindControl("lbIDK" );
  4.             ImageButton btUpdate = (ImageButton)e.Item.FindControl("btUpdateK" );
  5.             btUpdate.CommandArgument = lbID.Text;
  6.             ImageButton btDelete = (ImageButton)e.Item.FindControl("btDeleteK" );
  7.             btDelete.CommandArgument = lbID.Text;
  8. }



---------------
How can I save my little boy from Oppenheimer's deadly toy ? There is no monopoly of common sense on either side of the political fence
mood
Publicité
Posté le 10-07-2009 à 10:10:40  profilanswer
 

n°1904321
fatloui
I'll be back
Posté le 10-07-2009 à 10:28:41  profilanswer
 


 
non en fait ici mon object sender est la datagridview pas Etat

Code :
  1. <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
  2.             DataSourceID="SqlDataSource1" CellPadding="4" ForeColor="#333333"
  3.             Height="454px" Width="580px"
  4.             onselectedindexchanged="GridView1_SelectedIndexChanged" >
  5.             <FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
  6.             <RowStyle BackColor="#EFF3FB" HorizontalAlign="Center" />
  7.            
  8.             <Columns>
  9.                 <asp:BoundField DataField="Domaine" HeaderText="Domaine"
  10.                     SortExpression="Domaine" />
  11.                 <asp:BoundField DataField="Service" HeaderText="Service"
  12.                     SortExpression="Service" />
  13.                      <asp:TemplateField HeaderImageUrl="Etat.bmp" >
  14.            <ItemTemplate>
  15.            <asp:RadioButtonList ID="Etat" CellSpacing="10" RepeatDirection="Horizontal"
  16.            runat="server" OnSelectedIndexChanged="Check_Radio">
  17.            <asp:ListItem Selected="True"></asp:ListItem>
  18.            <asp:ListItem ></asp:ListItem>
  19.            <asp:ListItem></asp:ListItem>   
  20.            </asp:RadioButtonList>     
  21.                </ItemTemplate>
  22.                </asp:TemplateField> 
  23.             </Columns>         
  24.             <PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />
  25.             <SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />
  26.             <HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
  27.             <EditRowStyle BackColor="#2461BF" />
  28.             <AlternatingRowStyle BackColor="White" />
  29.         </asp:GridView>


 

bpoujol a écrit :

Tu as un évènement onRowDataBound(sender,e) lié à ton contrôle DataGridView.


Je vais regarder de ce coté la mais j'avoue que pour le moment c'est un peu obscure ce code
 

Message cité 1 fois
Message édité par fatloui le 10-07-2009 à 10:33:02
n°1904330
bpoujol
Posté le 10-07-2009 à 10:40:55  profilanswer
 

fatloui a écrit :


Je vais regarder de ce coté la mais j'avoue que pour le moment c'est un peu obscure ce code


 
 
 

Code :
  1. 1protected void dlDocumentK_ItemDataBound(object sender, DataListItemEventArgs e)
  2. {
  3.             2Label lbID = (Label)e.Item.FindControl("lbIDK" );
  4.             3ImageButton btUpdate = (ImageButton)e.Item.FindControl("btUpdateK" );
  5.             4btUpdate.CommandArgument = lbID.Text;
  6. }


 
1L'item on rowDataBound est appelé dès que une ligne est "bindé" sur la GridView.
En gros sur ton exemple : le gv est rempli par ta dataSouce "SQLdataSource1", à chaque fois qu'il écrit une ligne, il lève l'évènement.
 
2Tu recupère le contrôle dont tu veux évaluer la valeur
 
3Tu recupère le contrôle dont tu veux modifier la valeur dans ton cas  
RadioButtonList rbl = (RadioButtonList)e.Item.FindControl("Etat" );
4Tu modifie ton contrôle  
rbl.Items[0].Checked


---------------
How can I save my little boy from Oppenheimer's deadly toy ? There is no monopoly of common sense on either side of the political fence
n°1904347
fatloui
I'll be back
Posté le 10-07-2009 à 11:14:38  profilanswer
 

merci ^^
je commence à y voir plus clair
 
parcontre, il me semble que on rowDataBound se declare  
protected void GridView1_bind(object sender, GridViewRowEventArgs e)
 
et non pas
protected void GridView1_bind(object sender, DataListItemEventArgs e)
 
du coup j'ai tenté  

Code :
  1. protected void GridView1_Bound(object sender, GridViewRowEventArgs e)
  2.         {
  3.             Label1.Text = "ici";
  4.                        
  5.             RadioButtonList rbl = (RadioButtonList)e.Row.FindControl("Etat" );
  6.             rbl.Items[0].Selected = true;
  7.            
  8.         }


 
Mais ca ne fonctionne pas car l'objet "is not found" et du coup je suis un peu perdue aussi

n°1904351
bpoujol
Posté le 10-07-2009 à 11:22:40  profilanswer
 

fatloui a écrit :

merci ^^
je commence à y voir plus clair
 
parcontre, il me semble que on rowDataBound se declare  
protected void GridView1_bind(object sender, GridViewRowEventArgs e)
 
et non pas
protected void GridView1_bind(object sender, DataListItemEventArgs e)
 


 
Tout a fait, faute de frappe (je n'ai pas de Visual Studio sous les yeux).
Bizarre qu'il ne trouve pas le contrôle...


---------------
How can I save my little boy from Oppenheimer's deadly toy ? There is no monopoly of common sense on either side of the political fence
n°1904355
fatloui
I'll be back
Posté le 10-07-2009 à 11:31:25  profilanswer
 

j'ai tenté
 

Code :
  1. RadioButtonList rbl = new RadioButtonList();
  2.             rbl = (RadioButtonList)e.Row.FindControl("Etat" );
  3.             rbl.Items[0].Selected = true;


 
et ca aussi

Code :
  1. RadioButtonList rbl = new RadioButtonList();
  2.             rbl = (RadioButtonList)GridView1.FindControl("Etat" );
  3.             rbl.Items[0].Selected = true;


 
ca me donne toujours la meme erreur : La référence d'objet n'est pas définie à une instance d'un objet.
 
J'ai du faire une erreur au niveau de la declaration


Message édité par fatloui le 10-07-2009 à 11:31:41
n°1904786
fatloui
I'll be back
Posté le 13-07-2009 à 10:18:45  profilanswer
 

alors en fait ca fonctionne mais ca me genere une erreur a la fin

Code :
  1. RadioButtonList rbl = (RadioButtonList)e.Row.FindControl("Etat" );
  2. try{           
  3.     rbl.Items[0].Selected = true;
  4. }
  5. catch{
  6.      Label1.Text = "ici";
  7. }


Il me met tous les radiobutton de la rangée 0 à true et Label1 prend le text "ici"
 
c'est bizarre mais ca fonctionne.
 
Par contre,
mon objectif est qu'à la chargement de la page, les radiobuttons prennent une position en fonction d'une base de donnée => Ca marche nikel en utilisant

Code :
  1. RadioButtonList rbl = (RadioButtonList)GridView1.Rows[i].FindControl("Etat" );
  2.                     if (etat == 1)
  3.                     {
  4.                         rbl.Items[0].Selected = true;
  5.                     }
  6. etc


 
Par contre je veux que lorsque le user valide, les données de la bdd soient mises à jour

Code :
  1. rq = "UPDATE matable SET Etat = 3 WHERE ID = " + j;
  2.                     sql = new SqlCommand(rq, cx_indic);
  3.                     sql.ExecuteNonQuery();
  4.                     RadioButtonList rbl = (RadioButtonList)GridView1.Rows[i].FindControl("Etat" );
  5.                
  6.                     if (rbl.Items[0].Selected == true)
  7.                     {
  8.                         rq = "UPDATE matable SET Etat = 1 WHERE ID = " + j;
  9.                         sql = new SqlCommand(rq, cx_indic);
  10.                         sql.ExecuteNonQuery();
  11.                     }
  12. etc


Ca fonctionne aussi (la connexion à la bdd se passe nikel) sauf que rbl.Items[0].Selected ne prend pas la nouvelle valeur de la page mais celle qui etait au chargement de la page.
En clair :
initialement : rbl.Items[0].Selected == true , le user coche le 2eme radio button (logiquement rbl.Items[0].Selected == false et rbl.Items[1].Selected == true)
sauf que lorsque le user click sur valider, rbl.Items[0].Selected == true  
 
Je vois pas d'ou vient le probleme

n°1905419
fatloui
I'll be back
Posté le 15-07-2009 à 16:03:30  profilanswer
 

Mon probleme est resolu (en partie)
 
en fait j'avais declaré ma radiobuttonlist sur la page aspx comme ca

Code :
  1. <asp:RadioButtonList ID="Etat" CellSpacing="10"
  2.            RepeatDirection="Horizontal"
  3.            runat="server">
  4.            <asp:ListItem></asp:ListItem>
  5.            <asp:ListItem></asp:ListItem>
  6.            <asp:ListItem></asp:ListItem>   
  7.            </asp:RadioButtonList>


 
Et chaque fois que je validais, il me selectionnait tous les 1er radiobutton
 
et maintenant  

Code :
  1. <asp:RadioButtonList ID="Etat" CellSpacing="10"
  2.            RepeatDirection="Horizontal"
  3.            runat="server">
  4.            <asp:ListItem Text="Sourire"></asp:ListItem>
  5.            <asp:ListItem Text="Vert"></asp:ListItem>
  6.            <asp:ListItem Text="Rouge"></asp:ListItem>   
  7.            </asp:RadioButtonList>


Il ne fait plus ce qu'il veut et laisse le radio button selectionné à true (et non pas le premier)
Merci pour votre aide ^^


Message édité par fatloui le 15-07-2009 à 16:29:35

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  [ASP.NET] Datagridview et Radiobuttonlist

 

Sujets relatifs
[Resolu][ASP.NET] deployement sur serveur IIS / pb de bibliothequeVariables flash vers ASP
[vb] problème de boucle avec datagridview[VB.Net Express 2008] Problème debugger
[Demande d'info] .NET FrameworkNet::ftp code retour
Cherche Développeur Java J2EE et/ou .NET[Réglé] (Dot.Net) Add-in Manager
Interfacage C/Fortran sous VB .Net 
Plus de sujets relatifs à : [ASP.NET] Datagridview et Radiobuttonlist


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)