SharePoint - Problem with Sharepoint DateTimeControl
Asked By Holysmok
11-Feb-08 09:15 AM

Hi All,
I am having problem when I try to retrieve selectedDate property of the
datetime control in my webpart
Problem 1 : It does not persist the values during postback and i don't know
why
Problem 2 : I always returns the selecteddate property as currentdate, and I
am sure I am not setting any values before.
Please help, As I am not able to get rid of this problem since 2 days
Here is the code fragment I use and I in Button_Click event, I get the value
current datetime,
Imports System.Web.UI
Imports System.Web.UI.HtmlControls
Imports System.Web.UI.WebControls
Imports System.Web.UI.WebControls.WebParts
Imports System.Xml.Serialization
Imports System.ComponentModel
Imports Microsoft.SharePoint
Imports Microsoft.SharePoint.Utilities
Imports Microsoft.SharePoint.WebControls
Imports Microsoft.SharePoint.WebPartPages
Protected Overrides Sub CreateChildControls()
Me.Controls.Clear()
Dim HtmlTable As String
HtmlTable = "<table border=""0"" cellpadding=""0"" cellspacing=""0""
width=""100%"">"
'HtmlTable &= "<colgroup><col width=""100%""><col
width=""40px""></colgroup>"
HtmlTable &= "<tr><td>"
Me.Controls.Add(New LiteralControl(HtmlTable))
_Dtc = New DateTimeControl()
_Dtc.ID = "dtcGetArticles" & Me.UniqueID
_Dtc.LocaleId = SPContext.Current.RegionalSettings.LocaleId
_Dtc.DateOnly = True
Me.Controls.Add(Me._Dtc)
HtmlTable = "</td><td>"
Me.Controls.Add(New LiteralControl(HtmlTable))
'ButtonRefresh
Dim _ButRefresh As New Button
'_ButRefresh.ID = "butRefresh" & Me.UniqueID
_ButRefresh.Text = My.Resources.RassegnaStampa._butRefresh
AddHandler _ButRefresh.Click, AddressOf Me.Button_Click
Me.Controls.Add(_ButRefresh)
HtmlTable = "</td></tr></table>"
Me.Controls.Add(New LiteralControl(HtmlTable))
ChildControlsCreated = True
_Read = New AsyncRead
Dim Site As New SPSite(Me.TopLevelSiteName)
_SpWeb = Site.AllWebs(Me.SiteName)
Dim AsyncStart As New System.Web.BeginEventHandler(AddressOf
_Read.OnBegin)
Dim AsyncEnd As New System.Web.EndEventHandler(AddressOf _Read.OnEnd)
Dim AsyncTimeout As New System.Web.EndEventHandler(AddressOf
_Read.OnTimeout)
Dim oAsync As New PageAsyncTask(AsyncStart, AsyncEnd, AsyncTimeout,
Me)
Me.Page.RegisterAsyncTask(oAsync)
End Sub
Protected Overrides Sub Render(ByVal writer As
System.Web.UI.HtmlTextWriter)
MyBase.Render(writer)
Try
If _Read.ListItems IsNot Nothing Then
writer.RenderBeginTag(HtmlTextWriterTag.Table)
Dim Temp As String = String.Empty
For Each ListItem As SPListItem In _Read.ListItems
If Temp.ToUpper <> ListItem("Testata").ToString.ToUpper
Then
writer.RenderBeginTag(HtmlTextWriterTag.Tr)
Temp = ListItem("Testata").ToString
writer.RenderBeginTag(HtmlTextWriterTag.Td)
writer.RenderBeginTag(HtmlTextWriterTag.B)
writer.Write(Temp)
writer.RenderEndTag()
writer.RenderEndTag()
writer.RenderEndTag()
End If
writer.RenderBeginTag(HtmlTextWriterTag.Tr)
writer.RenderBeginTag(HtmlTextWriterTag.Td)
Dim link As New System.Web.UI.WebControls.HyperLink
link.EnableViewState = False
link.Text = ListItem.Item("Title")
If ListItem.Attachments.Count > 0 Then
link.Target = "A" & Now.Ticks.ToString
link.NavigateUrl = Me.Web.Site.Url & "/lists/" &
Me.CustomListName & "/Attachments/" & ListItem.ID.ToString & "/" &
ListItem.Attachments.Item(0)
Else
link.NavigateUrl = "javascript:alert('Articolo non
disponibile')"
End If
link.RenderControl(writer)
writer.RenderEndTag()
writer.RenderEndTag()
Next
writer.RenderEndTag()
End If
Catch ex As Exception
SharepointLog.WriteTrace(ex)
End Try
End Sub
Public Overrides Sub Dispose()
MyBase.Dispose()
If _SpWeb IsNot Nothing Then
_SpWeb.Dispose()
End If
End Sub
Private Sub Button_Click(ByVal sender As Object, ByVal e As
System.EventArgs)
Me.Controls.Add(New LiteralControl(Me._Dtc.SelectedDate))
End Sub
TIA,
Holy
SPContext.Current.RegionalSettings.LocaleId
(1)
System.Web.UI.WebControls.HyperLink
(1)
System.Web.UI.WebControls.WebParts
(1)
System.Web.UI.HtmlTextWriter
(1)
System.Web.UI.HtmlControls
(1)
System.Web.UI.WebControls
(1)
SPListItem
(1)
Microsoft.SharePoint.WebPartPages
(1)
becke replied...
Hi
I struggled with the same issue for two days.
After a postback, the control lost its data and returned the current
date.
Finally I got it working by removing the line where the ID of the
DateTimeControl is set. In your case, this would be the line
_Dtc.ID = "dtcGetArticles" & Me.UniqueID
Then it worked.
I hope this helps your problem.
Cheers!
Frank
Hakim Naji replied...
Add this line before set your SelectedDate like :
_Dtc.ClearSelection()
_Dtc.SelectedDate = "2009-03-05"
Let me know if that solve your problem.
Hakim.
MOSS 2007: Inheriting from System.Web.UI.WebControls.WebParts.WebPart fails SharePoint Hi. I've written several web parts inheriting from Microsoft.SharePoint.WebPartPages.WebPart an they work fine. But the recomended way is to inherit from System.Web.UI.WebControls.WebParts.WebPart. Doing this I get the error "the ClassX does not derive from
0? SharePoint I created a class library project with a class that derives from the System.Web.UI.WebControls.WebParts.WebPart base class. Imports System Imports System.Text Imports System.Web.UI.WebControls.WebParts Public Class HelloWorldWebPart Inherits WebPart Protected Overrides Sub Render(ByVal writer As System
0? SharePoint I created a class library project with a class that derives from the System.Web.UI.WebControls.WebParts.WebPart base class. Imports System Imports System.Text Imports System.Web.UI.WebControls.WebParts Public Class HelloWorldWebPart Inherits WebPart Protected Overrides Sub Render(ByVal writer As System
ICellConsumer, but Visual Studios 2005 says that are obsolet so use ConnectionProvider and ConnectionConsumer (from System.Web.UI.WebControls.WebParts). Is there a way to do this using Microsoft.Sharepoint.Webpartpages instead use System.Web.UI.WebControls.WebParts ? thanks, SharePoint Development Discussions SharePoint (1) You should inherit Microsoft.SharePoint.WebPartPages.WebPart