Bonjour,
Je suis en train de créer un UserControl dont voici l'ascx :
Voici le code behind associé (PivotTable.ascx.vb)
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 <%@ Control Language="vb" AutoEventWireup="false" CodeBehind="PivotTable.ascx.vb" Inherits="PAPAGEI.PivotTable" %> <asp:ListView ID="ListView" runat="server" ItemPlaceholderID="PlaceHolder"> <LayoutTemplate> <table> <tbody> <asp:PlaceHolder ID="Placeholder" runat="server"/> </tbody> </table> </LayoutTemplate> <ItemTemplate> <tr> <asp:PlaceHolder ID="ItemPlaceHolder" runat="server" /> <td> <asp:ImageButton ID="EditButton" runat="server" ImageUrl="~/App_Themes/Default/Images/Edit.png" CommandName="Edit"/> </td> </tr> </ItemTemplate> <EditItemTemplate> <tr> <asp:PlaceHolder ID="EditItemPlaceHolder" runat="server" /> <td> <asp:ImageButton ID="UpdateButton" runat="Server" ImageUrl="~/App_Themes/Default/Images/Validate.png" CommandName="Update"/> <asp:ImageButton ID="CancelButton" runat="Server" ImageUrl="~/App_Themes/Default/Images/Back.png" CommandName="Cancel" CausesValidation="false"/> </td> </tr> </EditItemTemplate> <InsertItemTemplate> <tr> <asp:PlaceHolder ID="InsertItemPlaceHolder" runat="server" /> <td> <asp:ImageButton ID="InsertButton" runat="Server" ImageUrl="~/App_Themes/Default/Images/Validate.png" CommandName="Insert"/> </td> </tr> </InsertItemTemplate> </asp:ListView>
J'utilise ce User Control de cette manière :
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 Imports System.ComponentModel <DefaultProperty("SelectedValue")> _ Public Class PivotTable Inherits System.Web.UI.UserControl Private m_ItemTemplate As ITemplate = Nothing Private m_EditItemTemplate As ITemplate = Nothing Private m_InsertItemTemplate As ITemplate = Nothing <BrowsableAttribute(False)> _ Public ReadOnly Property SelectedValue As Object Get Return ListView.SelectedValue End Get End Property <Category("Data")> _ Public Property DataSourceID As String Get Return ListView.DataSourceID End Get Set(ByVal DataSourceID As String) ListView.DataSourceID = DataSourceID End Set End Property <TypeConverterAttribute(GetType(StringArrayConverter))> _ <Category("Data")> _ Public Overridable Property DataKeyNames As String() Get Return ListView.DataKeyNames End Get Set(ByVal DataKeyNames As String()) ListView.DataKeyNames = DataKeyNames End Set End Property <Category("Misc")> _ Public Property InsertItemPosition As InsertItemPosition Get Return ListView.InsertItemPosition End Get Set(ByVal InsertItemPosition As InsertItemPosition) ListView.InsertItemPosition = InsertItemPosition End Set End Property <BrowsableAttribute(False)> _ <PersistenceModeAttribute(PersistenceMode.InnerProperty)> _ <TemplateContainerAttribute(GetType(INamingContainer), BindingDirection.TwoWay)> _ Public Property ItemTemplate() As ITemplate Get Return m_ItemTemplate End Get Set(ByVal Template As ITemplate) m_ItemTemplate = Template End Set End Property <BrowsableAttribute(False)> _ <PersistenceModeAttribute(PersistenceMode.InnerProperty)> _ <TemplateContainerAttribute(GetType(INamingContainer), BindingDirection.TwoWay)> _ Public Property EditItemTemplate() As ITemplate Get Return m_EditItemTemplate End Get Set(ByVal Template As ITemplate) m_EditItemTemplate = Template End Set End Property <BrowsableAttribute(False)> _ <PersistenceModeAttribute(PersistenceMode.InnerProperty)> _ <TemplateContainerAttribute(GetType(INamingContainer), BindingDirection.TwoWay)> _ Public Property InsertItemTemplate() As ITemplate Get Return m_InsertItemTemplate End Get Set(ByVal Template As ITemplate) m_InsertItemTemplate = Template End Set End Property Private Sub ListView_ItemCreated(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.ListViewItemEventArgs) Handles ListView.ItemCreated If Not ItemTemplate Is Nothing Then With e.Item If Not .FindControl("ItemPlaceHolder") Is Nothing Then ItemTemplate.InstantiateIn(.FindControl("ItemPlaceHolder")) End If End With End If If Not EditItemTemplate Is Nothing Then With e.Item If Not .FindControl("EditItemPlaceHolder") Is Nothing Then EditItemTemplate.InstantiateIn(.FindControl("EditItemPlaceHolder")) End If End With End If If Not InsertItemTemplate Is Nothing Then With e.Item If Not .FindControl("InsertItemPlaceHolder") Is Nothing Then InsertItemTemplate.InstantiateIn(.FindControl("InsertItemPlaceHolder")) End If End With End If End Sub Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load End Sub End Class
Lorsque je suis en affichage normal pas de soucis, le CODE s'affiche bien, par contre dès que je suis en mode édition (EditItemTemplate) ou en mode insertion (InsertItemTemplate) le code initial dans la TextBox est Ok mais lorsque je clique sur le bouton Update ou Insert une valeur Vide est transmise à la base de données, la valeur saisie dans la TextBox n'est pas transmise à la base : en conclusion l'Eval("CODE") - one way binding -fonctionne mais pas le Bind("CODE") -two way binding.
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 <%@ Register Src="~/Controls/PivotTable.ascx" TagName="PivotTable" TagPrefix="papagei" %> <asp:SqlDataSource ID="SqlDataSourceCountries" runat="server" ConnectionString='<%$ ConnectionStrings:PAPAGEIConnectionString %>' SelectCommand=" SELECT [V_TEXT_TRANSLATION].TEXT_ID, [V_TEXT_TRANSLATION].CODE FROM [common].[L_COUNTRY] INNER JOIN [current].[V_TEXT_TRANSLATION] ON [L_COUNTRY].[TEXT_ID] = [V_TEXT_TRANSLATION].[TEXT_ID] WHERE [V_TEXT_TRANSLATION].[LANGUAGE] = @@LANGUAGE ORDER BY [V_TEXT_TRANSLATION].[TEXT]; " UpdateCommand=" UPDATE [current].[T_TEXT] SET CODE = @CODE WHERE TEXT_ID = @TEXT_ID; " InsertCommand=" DECLARE @TEXT_ID [uniqueidentifier]; SET @TEXT_ID = NEWID(); INSERT INTO [current].[T_TEXT] ( TEXT_ID, CODE ) VALUES ( @TEXT_ID, @CODE ); INSERT INTO [common].[L_COUNTRY] ( TEXT_ID ) VALUES ( @TEXT_ID ); " ProviderName='<%$ ConnectionStrings:PAPAGEIConnectionString.ProviderName %>'> <UpdateParameters> <asp:Parameter Name="TEXT_ID" DbType="Guid" /> <asp:Parameter Name="CODE" DbType="String" /> </UpdateParameters> <InsertParameters> <asp:Parameter Name="CODE" DbType="String" /> </InsertParameters> </asp:SqlDataSource> <papagei:PivotTable ID="PivotTable" runat="server" DataSourceID="SqlDataSourceCountries" DataKeyNames="TEXT_ID" InsertItemPosition="LastItem" > <ItemTemplate> <td> <asp:Label ID="CodeLabel" runat="server" Text='<%#Eval("CODE")%>' /> </td> </ItemTemplate> <EditItemTemplate> <td> <asp:TextBox ID="CodeTextBox2" runat="server" Text='<%#Bind("CODE")%>'/> </td> </EditItemTemplate> <InsertItemTemplate> <td> <asp:TextBox ID="CodeTextBox1" runat="server" Text='<%#Bind("CODE")%>' /> </td> </InsertItemTemplate> </papagei:PivotTable>
Quelqu'un peut-il m'aider ?
Partager