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.