IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SharePoint .NET Discussion :

Comment utiliser un control TextField dans une webpart


Sujet :

SharePoint .NET

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 20
    Points : 21
    Points
    21
    Par défaut Comment utiliser un control TextField dans une webpart
    Bonjour,

    Je developpe actuellement une webpart pour editer un item d'une liste.
    J'arrive à récupérer l'item et à l'afficher mais quand j'appui sur le bouton, mes champs se retrouvent vident.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
     
    using System;
    using System.ComponentModel;
    using System.Reflection;
     
    using System.Runtime.InteropServices;
     
    using System.Web.UI;
    using System.Web.UI.HtmlControls;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
     
    using System.Xml.Serialization;
     
    using Microsoft.SharePoint;
    using Microsoft.SharePoint.WebControls;
    using Microsoft.SharePoint.WebPartPages;
    using Microsoft.SharePoint.Utilities;
     
    using WebPart = Microsoft.SharePoint.WebPartPages.WebPart;
     
    using RH.SharePoint; // cf google pour trouver le fichier .cs
     
    namespace Web_Part_test
    {
        public class Web_Part_test : System.Web.UI.WebControls.WebParts.WebPart
        {
            private SPWeb MyWeb;
            private SPList MyList;
            private SPListItem MyItem;
            private SPControlMode MyControlMode;
     
            private Table _Table;
            private ImageButton _Button;
            private string _string = "test";
     
            private int _PageNumber = 1;
     
            public Web_Part_test()
            {
                this.ExportMode = WebPartExportMode.All;
            }
     
            protected override void CreateChildControls()
            {
                    _Table = new Table();
                    _Table.ID = "myTable";
                    Controls.Add(_Table);
     
                    _Button = new ImageButton();
                    _Button.ID = "Button";
                    _Button.Click += new ImageClickEventHandler(_Button_Click);
                    Controls.Add(_Button);
            }
     
            protected override void OnInit(EventArgs e)
            {
                    MyWeb = SPContext.Current.Web;
                    MyList = MyWeb.Lists["Parametres"];
                    MyItem = MyList.GetItemById(1);
                    MyControlMode = SPControlMode.Edit;
            }
     
            protected override void OnPreRender(EventArgs e)
            {
                        CreateChildControls();
                        base.EnsureChildControls();
     
                        SPField MyField = MyItem.Fields["FFT close"];
     
                        TableRow row = new TableRow();
                        TableCell cell1 = new TableCell();
                        cell1.CssClass = "ms-formlabel";
                        cell1.Text = _string;//"test"; //MyField.Title;
                        row.Cells.Add(cell1);
     
                        TableCell cell2 = new TableCell();
                        cell2.CssClass = "ms-formbody";
     
                        Control cntrl = SharePointWebControls.GetSharePointControls(MyField, MyList, MyItem, MyControlMode);
                        if (cntrl != null)
                        {
                            cell2.Controls.Add(cntrl);
                            row.Cells.Add(cell2);
     
                            _Table.Rows.Add(row);
                        }
                        _Table.Rows.Add(row);
            }
     
            protected override void Render(HtmlTextWriter writer)
            {
                    writer.Write(_PageNumber.ToString());
                    _Table.RenderControl(writer);
                    _Button.RenderControl(writer);
            }
     
            void _Button_Click(object sender, ImageClickEventArgs e)
            {
                    _PageNumber++;
                    MyWeb.AllowUnsafeUpdates = true;
                    _PageNumber += _Table.Rows.Count;
                    foreach (TableRow row in _Table.Rows)
                    {
                        foreach (TableCell cell in row.Cells)
                        {
                            foreach (Control cntrl in cell.Controls)
                            {
                            	// ne passe pas par ce bout de code, pas de ligne après le post back
                                TextField cntrl2 = (TextField)cntrl;
                                cntrl2.UpdateFieldValueInItem();
                            }
                        }
                    }
                    //MyItem.Update();
                    MyWeb.AllowUnsafeUpdates = false;
            }
        }
    }
    J'utilise le fichier RH.SharePoint.SharePointWebControls.cs que vous pouvez télécharger depuis cette page

    J'ai pas vraiment d'idée sur l'origine du problème donc si quelqu'un à déjà utiliser des TextField ou fait des webparts d'édition je suis preneur de toute idée ou bout de code.

    Merci d'avance.

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 20
    Points : 21
    Points
    21
    Par défaut
    J'ai trouvé comment faire.

    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    using System;
    using System.ComponentModel;
    using System.Reflection;
     
    using System.Runtime.InteropServices;
     
    using System.Web.UI;
    using System.Web.UI.HtmlControls;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
     
    using System.Xml.Serialization;
     
    using Microsoft.SharePoint;
    using Microsoft.SharePoint.WebControls;
    using Microsoft.SharePoint.WebPartPages;
    using Microsoft.SharePoint.Utilities;
     
    using WebPart = Microsoft.SharePoint.WebPartPages.WebPart;
     
    using RH.SharePoint;
     
    namespace Web_Part_test
    {
        public class Web_Part_test : System.Web.UI.WebControls.WebParts.WebPart
        {
            private SPWeb MyWeb;
            private SPList MyList;
            private SPListItem MyItem;
            private SPControlMode MyControlMode;
     
            private Table _Table;
            private ImageButton _Button;
            private string _string = "test";
            private SPField MyField;
     
            private int _PageNumber = 1;
     
            public Web_Part_test()
            {
                this.ExportMode = WebPartExportMode.All;
            }
     
            protected override void CreateChildControls()
            {
                _Table = new Table();
                _Table.ID = "myTable";
                Controls.Add(_Table);
     
                _Button = new ImageButton();
                _Button.ID = "Button";
                _Button.Click += new ImageClickEventHandler(_Button_Click);
                Controls.Add(_Button);
     
                test();
            }
     
            protected override void OnInit(EventArgs e)
            {
                MyWeb = SPContext.Current.Web;
                MyList = MyWeb.Lists["Parametres"];
                MyItem = MyList.GetItemById(1);
                MyControlMode = SPControlMode.Display;
            }
     
            protected void test()
            {
                MyField = MyItem.Fields["FFT close"];
     
                TableRow row = new TableRow();
                TableCell cell1 = new TableCell();
                cell1.CssClass = "ms-formlabel";
                cell1.Text = _string;//"test"; //MyField.Title;
                row.Cells.Add(cell1);
     
                TableCell cell2 = new TableCell();
                cell2.CssClass = "ms-formbody";
     
                BaseFieldControl cntrl = (BaseFieldControl)SharePointWebControls.GetSharePointControls(MyField, MyList, MyItem, MyControlMode);
     
                    cntrl.Value = cntrl.ItemFieldValue;
     
                if (cntrl != null)
                {
                    cell2.Controls.Add(cntrl);
                    row.Cells.Add(cell2);
     
                    _Table.Rows.Add(row);
                }
                _Table.Rows.Add(row);
            }
     
            protected override void Render(HtmlTextWriter writer)
            {
                writer.Write(_string);
                _Table.RenderControl(writer);
                _Button.RenderControl(writer);
            }
     
            void _Button_Click(object sender, ImageClickEventArgs e)
            {
                _PageNumber++;
                MyWeb.AllowUnsafeUpdates = true;
                _PageNumber += _Table.Rows.Count;
                foreach (TableRow row in _Table.Rows)
                {
                    foreach (TableCell cell in row.Cells)
                    {
                        foreach (BaseFieldControl cntrl in cell.Controls)
                        {
                            MyItem[MyField.Title] = SharePointWebControls.GetValueFromObject(MyField, cntrl);
                        }
                    }
                }
                MyItem.Update();
                MyWeb.AllowUnsafeUpdates = false;
            }
        }
    }
    J'ai pas encore testé avec les autres type de field mais pour un TextField ca fonctionne.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2003] Comment utiliser des images stockées dans une feuille
    Par Pastekk dans le forum Excel
    Réponses: 2
    Dernier message: 30/06/2009, 12h17
  2. Réponses: 1
    Dernier message: 17/04/2009, 17h56
  3. TextField dans une webpart, erreur systématique
    Par adrix26 dans le forum SharePoint
    Réponses: 4
    Dernier message: 07/05/2008, 16h16
  4. utilisation de controles activex dans une page web
    Par raimo dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 02/05/2008, 16h24
  5. Réponses: 3
    Dernier message: 18/09/2007, 14h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo