Webpart en VB.net

Webpart en VB.net - C#/.NET managed - Programmation

Marsh Posté le 31-08-2005 à 11:28:13    

J'ai fais une webpart pour un site WSS
elle est de type dropdownlist
j'ai un message d'erreur lorsque je renseigne la propriété "fieldname"
si je ne renseigne que la propriété "listname" cela ne pose pas de pb
je pense donc que le pb vient de la fonction "GetListData"
 
Ci-dessous le code, si quelqu'un a une idée.
 
D'avance merci à tous...  :jap:  
 
 
 
 

Code :
  1. Imports System
  2. Imports System.ComponentModel
  3. Imports System.Web.UI
  4. Imports System.Web.UI.WebControls
  5. Imports System.Xml.Serialization
  6. Imports Microsoft.SharePoint
  7. Imports Microsoft.SharePoint.Utilities
  8. Imports Microsoft.SharePoint.WebPartPages
  9. Imports Microsoft.SharePoint.WebControls
  10. Imports System.Collections             
  11. 'Description for WebPart1.
  12. <DefaultProperty("listName" ), ToolboxData("<{0}:WebPart1 runat=server></{0}:WebPart1>" ), XmlRoot(Namespace:="WebPartDropDown" )> _
  13. Public Class WebPart1
  14.     Inherits Microsoft.SharePoint.WebPartPages.WebPart
  15.     Private Const _defaultText As String = ""
  16.     Dim _text As String = _defaultText
  17.     Protected myList As DropDownList
  18.     Dim _listName As String
  19.     Dim _fieldName As String
  20.     Dim _displayText As String
  21.     'Property : Nom de la liste... [ListName]
  22.     <Browsable(True), Category("Définitions" ), DefaultValue("" ), WebPartStorage(Storage.Personal), FriendlyName("Nom de la liste" ), Description("Indiquer le nom de la liste SharePoint du site courant" )> _
  23.     Property [ListName]() As String
  24.         Get
  25.             Return _listName
  26.         End Get
  27.         Set(ByVal Value As String)
  28.             _listName = Value
  29.         End Set
  30.     End Property
  31.     'Property : Nom du champ de la liste... [FieldName]
  32.     <Browsable(True), Category("Définitions" ), DefaultValue("" ), WebPartStorage(Storage.Personal), FriendlyName("Nom du champ" ), Description("Indiquer le nom du champ de la liste SharePoint" )> _
  33.     Property [FieldName]() As String
  34.         Get
  35.             Return _fieldName
  36.         End Get
  37.         Set(ByVal Value As String)
  38.             _fieldName = Value
  39.         End Set
  40.     End Property
  41.     'Property : Libellé à afficher... [DisplayText]
  42.     <Browsable(True), Category("Définitions" ), DefaultValue("" ), WebPartStorage(Storage.Personal), FriendlyName("Libellé" ), Description("Indiquer le libellé à afficher" )> _
  43.     Property [DisplayText]() As String
  44.         Get
  45.             Return _displayText
  46.         End Get
  47.         Set(ByVal Value As String)
  48.             _displayText = Value
  49.         End Set
  50.     End Property
  51.     Protected Overrides Sub RenderWebPart(ByVal output As System.Web.UI.HtmlTextWriter)
  52.         output.Write(SPEncode.HtmlEncode([DisplayText]))
  53.     End Sub
  54.     Protected Overrides Sub CreateChildControls()
  55.         'Initialisation du controle DropDownList
  56.         Dim myList As New DropDownList
  57.         myList.ID = "myList1"
  58.         Me.Controls.Add(myList)
  59.         AddHandler Me.PreRender, New EventHandler(AddressOf Me.WebPart1_PreRender)
  60.     End Sub
  61.     Private Sub WebPart1_PreRender(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.PreRender
  62.         'La liste est "bindée" ici...
  63.         Bind_ddlist()
  64.     End Sub
  65.     Private Sub Bind_ddlist()
  66.         'Si le composant WebPart n'est pas configuré...
  67.         If (ListName = "" Or FieldName = "" ) Then
  68.             Return
  69.         Else
  70.             If (myList.Items.Count = 0) Or (CStr(ViewState("ListName" )) <> ListName) Or (CStr(ViewState("FieldName" )) <> FieldName) Then
  71.                 ViewState("ListName" ) = ListName
  72.                 ViewState("FieldName" ) = FieldName
  73.                 myList.Items.Clear()
  74.                 myList.DataSource = GetListData(ListName, FieldName)
  75.                 myList.DataBind()
  76.             End If
  77.         End If
  78.     End Sub
  79.     Private Function GetListData(ByVal listName As String, ByVal fieldName As String) As ArrayList
  80.         'Ajout d'un array list de type ArrayList
  81.         Dim aList As New ArrayList
  82.         Dim mySite As SPWeb = SPControl.GetContextWeb(Context)
  83.         Dim myList As SPList = mySite.Lists(listName)
  84.         For Each myItem As SPListItem In myList.Items
  85.             aList.Add(myItem(fieldName))
  86.         Next
  87.         Return aList
  88.         'GetListData = aList
  89.     End Function
  90. End Class


Message édité par Sven_64 le 31-08-2005 à 11:31:40
Reply

Marsh Posté le 31-08-2005 à 11:28:13   

Reply

Marsh Posté le 31-08-2005 à 14:17:17    

chti up...  :bounce:

Reply

Marsh Posté le 01-09-2005 à 10:40:10    

remplace : aList.Add(myItem(fieldName)) par un truc du genre deja :
par
If (myItem(fieldName)) <> nothing Then
  aList.Add(myItem(fieldName))
else
   ' je sé c est deguelasse mais c est le plus rapide
  Dim ctrl as new TextBox()
  ctrl.text == "item  " & myItem.ToString & " - prop " & fieldmane & " vide !!!"
  Me.Controls.Add(ctrl)
End IF


Message édité par siestounet le 01-09-2005 à 10:42:16
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed