Soyez le premier à donner votre avis sur cette source.
Vue 17 865 fois - Téléchargée 660 fois
<%@ Page Explicit="True" Language="VB" Debug="True" EnableViewstate="True" AutoEventWireup="true"%> <%@ Import Namespace="System.Data" %> <%@ Import Namespace="System.Data.OleDb" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <script runat="server"> 'Déclaration des variables communes aux "Sub" Dim Conn As OleDbConnection = New OleDbConnection Dim Chem as string 'Chemin conduisant à la base Dim ConnString, SelectSql As String Dim Commande As OleDbCommand Dim StrOleDb as string Dim CreaTest as boolean Dim Nb, h As Integer Dim VerifNR as boolean '<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< Sub Page_Load(Src As Object, E As EventArgs) chem=ConfigurationSettings.AppSettings("chem") 'le chemin est enregistré dans le "Web.config" ConnString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath(chem) Conn= New OleDbConnection(ConnString) 'Nb est le nombre indiqué par la dropDownList du footer Nb=ViewState("Nb") If Not IsPostBack Then Session("CreaTest")=false 'Charger le dataGrid SelectSql = "Select * From [Ma_table] etc..." ChargerData(SelectSql,MonDataGrid) 'Si des boites ont été créées elseif Page.IsPostBack andalso Ctype(Session("CreaTest"),Boolean) then VerifNR = true 'initialisation de la variable test 'Verification des remplissages (ou autre vérif) dim striNom as string 'L'ID_Client peut dépendre du nb d'enregistrements si on met des contrôles dans les items (ici des checkBox par ex) Dim NOrdre as integer= (MonDataGrid.items.count + 2) ' le nombre "2" ne sera pas forcément le même 'boucle de vérification des remplissages for h=1 to Nb striNom = request.Form("MonDataGrid:_ctl" & NOrdre & ":tbNomAd" & h) '(NB._ L'ID-Client s'obtient en affichant la page et en "afficher la source") if striNom="" VerifNR=false end if next 'Si c'est mal rempli, on recharge les textBox if VerifNR = false AjouterControl(Nb) else 'autrement elles disparaissent et la variable da session est réinitialisée Session("CreaTest")=false end if End If End Sub '<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< Sub AjouterControl(Nb as integer) '"placeNom" est le nom de la tableCell qui contiendra les contrôles . 'Un autre conteneur qui possède une ID_client peut parfaitement convenir (un Control Panel doit sûrement marcher) Dim Cont as TableCell=Ctype(page.findcontrol("MonDataGrid:_ctl" & (MonDataGrid.items.count + 2) & ":placeNom"),TableCell) CreerControle(Nb ,Cont,"tbNomAd",110,14) End Sub '<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< Sub jeterControl() Dim Cont as TableCell=Ctype(page.findcontrol("MonDataGrid:_ctl" & (MonDataGrid.items.count + 2) & ":placeNom"),TableCell) Cont.Controls.Clear() Cont.dispose End Sub '<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< Sub CreerControle(N as integer, conteneur as object, Ident as String, larg as integer, Max as integer) for h=1 to N dim tbNomAd As New TextBox tbNomAd.ID=Ident & h 'identification tbNomAd.Attributes("runat")="server" tbNomAd.Width=New Unit(larg & "px") 'Réglages divers tbNomAd.height=New Unit("17px") tbNomAd.MaxLength=Max conteneur.Controls.Add(tbNomAd) conteneur.Controls.Add(New LiteralControl("<br>")) 'pour que les contrôles s'affichent l'un sous l'autre tbNomAd.Dispose() next End Sub '<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< Sub ChargerData(ChaineSQL as string, XGrid as DataGrid) Commande = New OleDbCommand(ChaineSQL, Conn) Conn.Open XGrid.DataSource=Commande.ExecuteReader() XGrid.DataBind End Sub '<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< Sub commander(source As Object, e As System.Web.UI.WebControls.DataGridCommandEventArgs) Dim btnAn As Button = CType(e.Item.FindControl("btnAn"), Button) Dim btnAdd As Button = CType(e.Item.FindControl("btnAdd"), Button) Dim lnkAdd As LinkButton = CType(e.Item.FindControl("lnkAdd"), LinkButton) 'COMMANDE DU LINKBUTTON "LNKADD" if e.commandName="Insert" then jeterControl 'on commence par virer les anciens s'ils existent Dim dpNb As DropDownList= CType(e.Item.FindControl("dpNb"), DropDownList) Dim Nb As Integer =dpNb.SelectedValue 'RAJOUT DES TEXTBOX AjouterBoites(Nb) Viewstate("Nb")=Nb 'Variable servant à tester si des boites ont été créées Session("CreaTest")=true 'COMMANDE DU BUTTON "BTNADD" elseif e.commandName="Ajouter" then Dim dpNb As DropDownList= CType(e.Item.FindControl("dpNb"), DropDownList) Dim Nb As Integer =dpNb.SelectedValue Dim NOrdre as string = CStr(MonDataGrid.Items.count +2) Nb=ViewState("Nb") 'Ici on met les messages d'alerte suite à la vérification du contenu des textBox dans le Page_Load, qui aboutira à "exit sub" If VerifNR = false then Message.text="<br>Remplissez les boites !<br>" exit sub end if 'ENVOI vers la base de données car tout est OK Message.text="" for h=1 to Nb Dim TxtbNomAdd as String =request.form("MonDataGrid:_ctl" & NOrdre & ":tbNomAd" & h) StrOleDb="Insert Into [Ma_Table] (MonChamp) Values (@TxtbNomAdd)" Commande=New OleDbCommand(StrOleDb, Conn) Conn.Open Commande.Parameters.Add("@TxtbNomAdd", TxtbNomAdd) Commande.ExecuteNonQuery() Conn.Close next SelectSql = "Select * From [Ma_Table] " ChargerData(SelectSql, MonDataGrid) MonDataGrid.EditItemIndex=-1 'COMMANDE DU BUTTON "BTNAN" elseif e.commandName="AnnulAjout" then 'la variable indiquant que des boites ont été créées est remise à false Session("CreaTest")=false 'les controles sont effacés jeterControl end if </script> </head> <body > <form runat="server"> <!-- Pour les infos --> <asp:Label ID="Message" runat="server" ForeColor="#5B5BDF"></asp:Label> <!-- Le DataGrid --> <asp:DataGrid ID="MonDataGrid" Width="100%" AutoGenerateColumns="false" OnItemCommand="commander" ShowFooter="true" runat="server" EnableViewState="true"> <columns> <asp:TemplateColumn > <itemtemplate> <asp:CheckBox ID="ChkDel" runat="server"></asp:CheckBox> </itemtemplate> <footertemplate> <asp:LinkButton ID="lnkAdd" runat="server" AccessKey="A" Text="Ajouter" Visible="true" CommandName="Insert"/> <asp:DropDownList ID="dpNb" runat="server" AutoPostBack="false" > <asp:ListItem Value="0" ></asp:ListItem> <asp:ListItem Value="1" ></asp:ListItem> <asp:ListItem Value="2" ></asp:ListItem> <asp:ListItem Value="3" ></asp:ListItem> <asp:ListItem Value="4" ></asp:ListItem> <asp:ListItem Value="5" ></asp:ListItem> </asp:DropDownList><br> <asp:Button id="btnAn" runat="server" Text="Ann" Visible="false" CommandName="AnnulAjout"/> <asp:Button id="btnAdd" runat="server" Width="50" Text="OK" Visible="false" CommandName="Ajouter"/> </footertemplate> </asp:TemplateColumn> <asp:TemplateColumn HeaderText="Nom" ><!-- Colonne où apparaissent les contrôles --> <itemtemplate> <asp:Label id=LabelNom Font-Bold="true" runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.Nom") %>'/> <br> </itemtemplate> <footertemplate> <!-- Le conteneur des textBox --> <asp:Table runat="server"><asp:TableRow runat="server"> <asp:TableCell ID="placeNom" runat="server" BorderWidth="2px"></asp:TableCell> </asp:TableRow></asp:Table> </footertemplate> </asp:TemplateColumn> </columns> </asp:DataGrid> <!-- Message d'info --> <asp:Label ID="Averto" ForeColor="#FF3300" Font-Size="14" runat="server"/><br> </form> </body> </html>
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.