begin process at 2012 05 28 06:54:03
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive ASP & ASP.NET

 > 

Archives ASP & ASP.NET

 > 

ASP.net

 > 

Table et controles sever dynamique


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

Table et controles sever dynamique

lundi 6 septembre 2004 à 20:12:14 | Table et controles sever dynamique

papiseckfr

bonjour,
j'ai un probleme, en fait je génére un tableau dhtml dynamique et je le rempli de controle (dropdownlist label, inputext ...) cependant chaque fois que je clique sur un bouton valider et que je veuiller récupéré les element rempli par l'utilisateur je n'y arrive pas. On dirai qu'avant d'execter le code qui est dans le bouton la page enleve tout les controles et les lignes ajouter dynamiquement ainsi si je recherche les contrles par rapport à leur id oubien que je passe le tableau généré a une autre page et que je cherche les elements ajoutés je ne trouve rien il y'a et il genére une erreur:
System.NullReferenceException: La référence d'objet n'est pas définie à une instance d'un objet.
voici mon code:using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;

namespace gestion_commerciale
{
/// <summary>
/// Description résumée de [!output SAFE_CLASS_NAME].
/// </summary>
public class bon : System.Web.UI.Page
{
protected System.Web.UI.WebControls.Label xnumbon;
protected System.Web.UI.WebControls.Label xcompte;
protected System.Web.UI.WebControls.Label xdate;
protected System.Web.UI.WebControls.Label xcode;

public HtmlTable xtable
{
get
{
return Table1;
}
}
private void Page_Load(object sender, System.EventArgs e)
{
this.EnableViewState=true;
Table1.EnableViewState=true;
if (!IsPostBack )
{
Table1.EnableViewState=true;
string sql_cl= "SELECT nom_client FROM client order by nom_client asc";
NumBon numero_bon = new NumBon();
xnumbon.Text = numero_bon.getNumBon().ToString();
xcompte.Text= Session["compte"].ToString();
DataBase db= new DataBase();
db.setDbConnection();
db.getDbConnection().Open();
RecordSet rs = new RecordSet(sql_cl,db.getDbConnection());
xclient.DataSource = rs.execSelect();
xclient.DataTextField = "nom_client";
xclient.DataBind();

}

}

#region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN : Cet appel est requis par le Concepteur Web Form ASP.NET.
//
InitializeComponent();
base.OnInit(e);
}

/// <summary>
/// Méthode requise pour la prise en charge du concepteur - ne modifiez pas
/// le contenu de cette méthode avec l'éditeur de code.
/// </summary>
private void InitializeComponent()
{
this.Button2.Click += new System.EventHandler(this.Button2_Click);
this.Button1.Click += new System.EventHandler(this.Button1_Click);
this.Load += new System.EventHandler(this.Page_Load);

}
#endregion



private void Button1_Click(object sender, System.EventArgs e)
{
/*HtmlInputText ddl =(HtmlInputText)this.Table1.FindControl(0+"lc"+1);
TextBox1.Text=ddl.Value;*/

//TextBox1.Text=ddl.s



//TextBox1.Text=ddl.SelectedItem.Text;
//Session.Add("tableau",Table1);
Server.Transfer("temp.aspx");

}

private void Button2_Click(object sender, System.EventArgs e)
{

int numrows = Convert.ToInt32 (xnbre.Text);
// boucle selon le nombre de produit
for ( int r = 0; r < numrows; r++ )
{
// instantiate a new row
HtmlTableRow row = new HtmlTableRow ( );
row.EnableViewState=true;

// set bgcolor for alternating rows
if ( r % 2 == 1 ) row.BgColor = "beige";

// loop through the given number of cells
for ( int c = 0; c < 8; c++ )
{
// instantiate a new cell
HtmlTableCell cell = new HtmlTableCell ( );
cell.EnableViewState=true;
// add cell content
if(c==0)
{
string sql_query="select distinct(nom_prod) from produit order by nom_prod asc";
DropDownList ddlDesi = new DropDownList();
//ddlDesi.EnableViewState=false;
//ddlDesi.AutoPostBack=true;
ddlDesi.ID=r+"lc"+c;
//DropDownList ddlDesi = (DropDownList)this.FindControl("l0c0");
DataBase db= new DataBase();
db.setDbConnection();
db.getDbConnection().Open();
RecordSet rs = new RecordSet(sql_query,db.getDbConnection());
ddlDesi.DataSource = rs.execSelect();
ddlDesi.DataTextField = "nom_prod";
ddlDesi.DataBind();
cell.Controls.Add (ddlDesi);
}
else if(c==1)
{
HtmlInputText itnom=new HtmlInputText();
itnom.ID=r+"lc"+c;
itnom.Size=10;
cell.Controls.Add(itnom);
}
else if (c==2)
{
DropDownList ddl = new DropDownList();
ddl.ID=r+"lc"+c;
ddl.Width=100;
//creation d'un array liste
ArrayList heuredifusion=new ArrayList ( );
heuredifusion.Add ( "12h:30" );
heuredifusion.Add ( "13h:00" );
heuredifusion.Add ( "14h:00" );
heuredifusion.Add ( "14h:15" );
heuredifusion.Add ( "15h:00" );
heuredifusion.Add ( "17h:00" );
heuredifusion.Add ( "19h:30" );
heuredifusion.Add ( "20h:00" );
heuredifusion.Add ( "20h:30" );
heuredifusion.Add ( "21h:00" );
heuredifusion.Add ( "23h:30" );
heuredifusion.Add ( "23h:45" );
ddl.DataSource=heuredifusion;// fn array liste
ddl.DataBind();
cell.Controls.Add (ddl);

}
else if(c==3)
{
HtmlInputText itqte=new HtmlInputText();
itqte.ID=r+"lc"+c;
itqte.Size=2;

cell.Controls.Add(itqte);
}
else if(c==4)
{

DropDownList stationDifusion = new DropDownList();
stationDifusion.ID=r+"lc"+c;
stationDifusion.Width=100;
//creation d'un array liste
ArrayList station=new ArrayList( );
station.Add("Télévision");
station.Add("Radio RSI");
station.Add("Chaîne Nationale");
station.Add("Dakar FM" );
station.Add("St Louis FM");
station.Add("Louga FM");
station.Add("Thies FM");
station.Add("Kaolack FM");
station.Add("Diourbel FM");
station.Add("Kolda FM");
station.Add("Ziguinchor FM");
station.Add("Tamba FM");
station.Add("Fatick FM");
station.Add("Synchronisation");
stationDifusion.DataSource=station;// fin array liste
stationDifusion.DataBind();
cell.Controls.Add (stationDifusion);
}

else if (c==5)
{
DropDownList ddl = new DropDownList();
DropDownList ddlHeureDifusion = new DropDownList();
ddl.ID=r+"lc"+c;
ddlHeureDifusion.Width=100;
//creation d'un array liste
ArrayList majoration=new ArrayList ( );
majoration.Add ( "0" );
majoration.Add ( "5" );
majoration.Add ( "10" );
majoration.Add ( "15" );
majoration.Add ( "20" );
majoration.Add ( "25" );
majoration.Add ( "30" );
majoration.Add ( "35" );
majoration.Add ("40" );
majoration.Add ( "45" );
majoration.Add ( "50" );
majoration.Add ( "55" );
majoration.Add ( "60" );
majoration.Add ( "65" );
majoration.Add ( "70" );
majoration.Add ( "75" );
majoration.Add ( "80" );
majoration.Add ( "85" );
majoration.Add ( "90" );
majoration.Add ( "95" );
majoration.Add ( "100" );
ddl.DataSource = majoration;// fin array liste
ddl.DataBind();
cell.Controls.Add (ddl);
}



// add the cell to the Cells collection
row.Cells.Add ( cell );
}
// add the row to the Rows collection
Table1.Rows.Add(row);

}
}




}
}




SOS aider mo s'il vous plait je suis dans la ...
lundi 6 septembre 2004 à 21:12:56 | Re : Table et controles sever dynamique

jesusonline

Membre Club Administrateur CodeS-SourceS
j'ai pas lu toute ta source mais le probleme semble etre que tu crées tes controls puis tu fais le postback, et la tout tes controls disparaissent ?

je viens de faire une petite source, qui normalement t'aidera à resoudre ton problème.



<%@ Page Language="VB" Trace="true"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

<script runat="server">

Public Class ControlColl
Inherits CollectionBase

Public Function Add(ByVal [Control] As Control) As Control
Me.List.Add([Control])
Return [Control]
End Function

Default ReadOnly Property Item(ByVal index As Int32) As Control
Get
Return CType(Me.List.Item(index), Control)
End Get
End Property

End Class

Public Property CollectionOfControl() As ControlColl
Get
Return CType(Session("CollectionOfControl"), ControlColl)
End Get
Set(ByVal value As ControlColl)
Session("CollectionOfControl") = value
End Set
End Property


Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)

If Not Page.IsPostBack Then
CollectionOfControl = New ControlColl
Else
For Each c As Control In CollectionOfControl
ph1.Controls.Add(c)
Next
End If

End Sub


Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs)

Dim txt As New TextBox
txt.Text = "Cyril"
txt.ID = "Txt1"
ph1.Controls.Add(txt)
CollectionOfControl.Add(txt)

End Sub

Sub Button2_Click(ByVal sender As Object, ByVal e As System.EventArgs)
button2.Text = "button cliqué"
End Sub

</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:PlaceHolder ID="ph1" Runat="Server" />

<asp:Button ID="Button1" Runat="server" Text="Button1" OnClick="Button1_Click" />
<asp:Button ID="Button2" Runat="server" Text="Button2" OnClick="Button2_Click" />

</div>
</form>
</body>
</html>



Essaye de la comprendre, si tu comprend pas tout dis le moi, je t'expliquerais mais tu vois que qd tu cliques sur le bouton 2 le premier bouton est gardé.

pour pouvoir recuperer la valeur du textbox, j'ai pas ecrit le code mais je te l'explique.

il faut tout simple boucler sur CollectionOfControl, en gros ca va te donner ca

for each c as control in CollectionOfControl
if c.ID = "txt" then
'c'est mon bon textbox
dim txtbox as textbox = ctype(c, textbox)
txtbox.text = "Texte changé"
end if
next

tu peux faire ca car CollectionOfControl est un tableau de control, et donc il possede l'attribut ID

J'espere que ca repondra à ton problème

@+




Cyril
mercredi 8 septembre 2004 à 13:31:06 | Re : Table et controles sever dynamique

papiseckfr

Salut,
Merci beaucoup cyril de m'avoir répondu.
depuis lor je suis sur le code. En fait je travail sous c#. Bon d'aprés ce que j'ai compris vous creer une collection de de controls et que chaque fois que vous ajouté un controle sur la page vous l'ajouté dans le controle de collection et pour le retrouver vous parcourez la collection en recherchant parr ID. Mon Probleme c que je n'arrive pas a mettre cela en c#. S'il vous plait aider moi depuis plus de deux semaine je bloc sur sa je n'avance pas.
merci d'avance
mercredi 8 septembre 2004 à 17:27:38 | Re : Table et controles sever dynamique

jesusonline

Membre Club Administrateur CodeS-SourceS
dis moi ou tu n'arrives pas à traduire, ou si tu as deja tout traduit, montre moi ce que t'as fait.

J'ai plus trop le temps ces temps, donc je peux pas te traduire toute la source en C#

mais j'en ai pas pour trop longtemps, avec de la chance peut etre ce soir, mais donne moi ce que t'as pas traduit, je trouverais peut etre deux minutes :)

sinon pour le principe de ma source, oui tu as bien compris


@+

Cyril
mercredi 8 septembre 2004 à 18:35:04 | Re : Table et controles sever dynamique

papiseckfr

merci pour tout;
en fait dans des accesseur au niveau de vb.net il y un arguement index que je n'est pas compris et qu'au niveau de c# il me dit que cela na pas ete definit null par c vrai je pense qu'au niveau de c# les accesseur non pas d'argument merci beaucoup de regarder le code pour moi tu est genial:


using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
namespace datagrid
{

public class WebForm3 : System.Web.UI.Page
{
public System.Web.UI.WebControls.Button Button1;
public System.Web.UI.WebControls.Button Button2;
protected System.Web.UI.WebControls.PlaceHolder ph1;

#region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN : Cet appel est requis par le Concepteur Web Form ASP.NET.
//
InitializeComponent();
base.OnInit(e);
}

/// <summary>
/// Méthode requise pour la prise en charge du concepteur - ne modifiez pas
/// le contenu de cette méthode avec l'éditeur de code.
/// </summary>
private void InitializeComponent()
{
this.Button1.Click += new System.EventHandler(this.Button1_Click);
this.Button2.Click += new System.EventHandler(this.Button2_Click);
this.Load += new System.EventHandler(this.Page_Load);

}
#endregion

private void Page_Init(object sender, System.EventArgs e)
{
InitializeComponent();
}
public class ControlColl : CollectionBase
{
public int index
{
get
{
return index;
}
set
{
index=value;
}
}

public Control Add(Control lControl)
{
this.List.Add(lControl);
return lControl;
}

Control Item
{
get
{
return ((Control)this.List[index]);
}
}
}

public ControlColl CollectionOfControl
{
get
{
return ((ControlColl)Session["CollectionOfControl"]);
}
set
{
Session["CollectionOfControl"] = value;
}
}

public void Button1_Click(object sender, System.EventArgs e)
{
TextBox txt = new TextBox();
txt.Text = "Cyril";
txt.ID = "Txt1";
ph1.Controls.Add(txt);
CollectionOfControl.Add(txt);
}

public void Button2_Click(object sender, System.EventArgs e)
{
Button2.Text = "button cliqué";
}

private void Page_Load(object sender, System.EventArgs e)
{
if (!Page.IsPostBack)
{
CollectionOfControl = new ControlColl();
}
else
{

foreach (Control c in CollectionOfControl)
{
ph1.Controls.Add(c);
}
}
}
}
}
mercredi 8 septembre 2004 à 19:17:14 | Re : Table et controles sever dynamique

jesusonline

Membre Club Administrateur CodeS-SourceS
J'ai tj pas le temps :

voici comment fonctionne les propriétés en C# et l'equivalent en VB


public int myVar;

public int MyProperty
{
get { return myVar;}
set { myVar = value;}
}

Public myVar As Integer

Public Property MyProperty() As Integer
Get
Return myVar
End Get
Set(ByVal value As Integer)
myVar = value
End Set
End Property



j'espere que ca peut t'aider

@+

Ce soir j'aurais plus le temps.

Par contre tu peux me detailler la ligne ou ca bug.

et une petite astuce qd tu ecris des longs codes dans le forum. entoure le des balises [co_de] [/co_de] (sans le _ au milieu)

@+


Cyril
mercredi 8 septembre 2004 à 20:07:09 | Re : Table et controles sever dynamique

papiseckfr

merci pour tout
en fait dans le code que vous m'avez remis il y'a ce passage

Default ReadOnly Property Item(ByVal index As Int32) As Control
Get
Return CType(Me.List.Item(index), Control)
End Get
End Property

que moi j'ai traduit au debut comme sa en c#

Control Item
{
get {
return ((Control)this.List[index]);
}
}

donc naturellement il me dit qu'il ne connait pas index
alors moi j'ai ajouté ceci

public int index
{
get
{
return index;
}
set{
index=value;
}
}

mais le problem reste entier je ne sait pas à quel moment initiallise index
et à l'execution dès que je click sur le boutton1 il me genere deux input avec le meme id donc quand je clique sur le deuxieme boutton il se plante en me disant qu'il y'a plusieur control qui ont le meme id.
et meme quand je met trace=true au niveau de la page aspx le l'erreur survient plus tot lor du click du premier boutton il me dit que trace doit avoir de control dont les id sont distinc se qui confirme ce que j'ai dit plus haut.
je suis sur que le probleme provient de ce index
je surveille le mail tt le temps en attendant votre reponse la monsieur si sa marche vous m'aurait tirer d'un mauvais pas
merci d'avance
mercredi 8 septembre 2004 à 21:08:48 | Re : Table et controles sever dynamique

jesusonline

Membre Club Administrateur CodeS-SourceS
J'ai qq secondes : voici

public Control Item(Int32 index)
{
return (Control)Me.List.Item(index);
}

C bon ?

@+


Cyril
mercredi 8 septembre 2004 à 21:41:38 | Re : Table et controles sever dynamique

papiseckfr

salut,
j'avait deja essayé cela mais sa ne marche pas. Je ne comprend pas pourquoi. Et le question fondamental c'est qui est ce qui appel cette methode dans tt le programme.
merci
mercredi 8 septembre 2004 à 22:09:39 | Re : Table et controles sever dynamique

jesusonline

Membre Club Administrateur CodeS-SourceS
on s'embete pour item mais c'est vrai qu'elle ne sert à rien, je l'ai mis par habitude
donc si tu veux tu peux l'enlever, en théorie ca devrait marcher, si un jour j'arrive à trouver du temps je te traduis ca :)
Par contre c'est qd meme bizarre que ca marche pas :-/

@+


Cyril

1 2 3

Cette discussion est classée dans : system, add, ddl, station, majoration


Répondre à ce message

Sujets en rapport avec ce message

Pb affichage GridView [ par cnguyen ] Bonjour,J'ai 2 DropDownList(DDL) , une affichant les mois, et une affichant les années.C'est DDL sont remplis au chargement en faisant : if (!Page.IsP Probleme de rechargement de une table dans une page [ par gama71 ] Bonjour , j'ai un probleme avec des éléments dans une table, il s'agit d'un htmlinputimagequi me permet lorsque l'on clique dessus d'aller cher toute dropdownlist et textbox ajoutées en C# [ par Sabine25 ] Bonjour,j ai un petit soucis concernant des DDL et TBX.J ai toujours aujouter des textbox et ddl avec le toolbox.maintenant je veux faire un formulair Composite Control ajoutés dynamiquement [ par zone51 ] Bonjour,Mon but est d'ajouter dynamiquement des contrôles dans une page suite à l'action d'un utilisateur.Pour cela, j'ai créé un CompositeControl qui [ASP.NET/C#] Argument de publication ou de rappel non valide [ par BaptX ] Bonjour à tous, N'hésitez pas à déplacer ce message si il n'est pas à sa place. Après m'être arraché les cheveux pendant une demi-journée à trouver comment ajouter un item dans une listview? [ par thucnhien ] Bonjour, J'ai eu un code qui marche en C#.net utilisant System.Windows.Forms.ListView comme suit: System.Windows.Forms.ListView listView1; ListView Ajouter dynamiquement un UserControl [ par Carrillon ] Bonjour à tous, Lorsque j'execute mon programme, j'ai l'erreur suivante 'La référence d'objet n'est pas définie à une instance d'un objet.' lorsque j ajax et son slideshow [ par volcom20 ] je tente de faire un slideshow pour une site web dans un projet d'école mais jarrive pas à faire marcher mon service web je tente de régler le problèm ExecuteNonQuery Connection non initialisé [ par wabema ] Merci de m'indiquer ce qui ne vas pas dans ce bout de code qui génére une erreur Private Sub BtnMaj_Click(ByVal sender As System.Object, ByVal e Problème avec un état Crystal Report comportant des sous-états [ par youppyy ] Bonjour, Je fais de l'ASP .NET / C# sur VS2003. J'ai rencontré un problème qui me bloque depuis quelques heures déjà ... J'ai construit deux états


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
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 : 1,295 sec (4)

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