Francesco Geri

Il blog di Francesco Geri
posts - 55, comments - 52, trackbacks - 31

My Links

News



Anch'io metto nel mio blog cose che scrivo così, tanto per fare, tanto per condividere miei appunti, senza prendermi la briga di garantirne l'infallibilità, né l'assoluta correttezza, senza pretese e con grande umilté.

Quanti mi hanno visto dal 25/10/2007:
...dettagli

Gli sponsore...
banner per la sponsorizzazione
Racconti Urbinati

Archives

Post Categories

Altre

Blogs

martedì 29 luglio 2008

[OT] Count down alle Ferie!

http://www.francescogeri.it/countdown.asp

posted @ martedì 29 luglio 2008 1.43 | Feedback (2) | Filed Under [ [OT] Relax ]

lunedì 21 luglio 2008

La proprietà Attributes di un ListItem viene persa nel postback

Definiamo una pagina aspx con un controllo DropDownList al quale aggiungiamo un dei ListItem da codice.

Vogliamo creare i ListItem con un attributo per memorizzare una informazione che ci interessa:

ListItem item;

item = new ListItem("Valore 1", "V1");

item.Attributes.Add("MyCustomAttribute", "CUSTOM 1");

this.MyDropDownList.Items.Add(item);

item = new ListItem("Valore 2", "V2");

item.Attributes.Add("MyCustomAttribute", "CUSTOM 2");

this.MyDropDownList.Items.Add(item);

Mettiamo in esecuzione e ci accorgiamo che l'attributo viene perso al primo postback.

Sembra si tratti di un un baco o giù di lì, in quanto l'oggetto DropDownList non salva nel ViewState la collezione degli attributes dei ListItem contenuti.

 

L'alternativa potrebbe essere di ri-definire il proprio DropDownList che si preoccupi di salvere e poi rileggere quelle informazioni.

Ecco un paio di esempi/post di come fare:

http://weblogs.asp.net/fmarguerie/archive/2003/02/27/3103.aspx

http://aspnet.4guysfromrolla.com/articles/091405-1.aspx

 

Da quardare anche nella KB di Microsoft il suggerimento seguente:

http://support.microsoft.com/default.aspx?scid=kb;en-us;Q309338

posted @ lunedì 21 luglio 2008 0.38 | Feedback (3) | Filed Under [ ASP.NET 2.0 Tips .Net ]

venerdì 11 luglio 2008

[OT] Vista e le dis-associazioni dei tipi di file

Ciao, qui è disponibile un utile utility per rimuovere una associazione tra un tipo di file e la relativa applicazione.

Dico che è utile perché non mi pare che Vista dia l'interfaccia per ottenere questa funzionalità.

 

unassoc

posted @ venerdì 11 luglio 2008 0.38 | Feedback (3) | Filed Under [ Tips Vista ]

mercoledì 2 luglio 2008

Nel meraviglioso mondo di SharePoint!

Problema:

Se da codice imposto una proprietà di tipo data+ora di un documento contenuto in una Document Library di SharePoint mi ritrovo un valore diverso da quallo impostato. In particolare ho uno sfasamento di un'ora o due.

 

Soluzione:

Certo, direte voi, devi usare le date in formato UTC.

Allora vediamo coda succede in 2 casi, cioè se il file esiste e modifico la sua proprietà, oppure se il file è creato nuovo e la proprietà assegnata all'upload.

L'esempio suppone che:

  • ci sia un documento all'url http://myServer/mySite/myDocLib
  • la document library che contiene quel documento abbia una proprietà di nome myDateTimeProp

Il codice di esempio (inserito in un qualche button click) esegue l'update della proprietà del documento esistente, poi crea un nuovo documento (con il contenuto del precedente) assegnandogli un certo valore della proprietà di tipo Data.

Si noti che nel primo caso (update) si deve usare la data nel suo formato normale, nel secondo la si deve convertire in formato UTC.

Ogni altra combinazione non sembra funzionare.

 

    1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

    2     ' Esegue l'update della data:

    3     Dim urlDoc As String = "http://myServer/mySite/myDocLib/myDoc1.tif"

    4     Dim objSite As SPSite = Nothing

    5     Dim objWeb As SPWeb = Nothing

    6     Try

    7       Me.Cursor = Cursors.WaitCursor

    8       ' Crea gli oggetti SPSite ed SPWeb

    9       objSite = New SPSite(urlDoc)

   10       objWeb = objSite.OpenWeb

   11       '' Cerca la document library

   12       Dim objItem As SPListItem = objWeb.GetListItem(urlDoc)

   13       objItem.Item("myDateTimeProp") = Now

   14       objItem.Update()

   15       Dim stream As IO.Stream = objItem.File.OpenBinaryStream()

   16       Dim props As New Hashtable

   17       props.Add("myDateTimeProp", Now.ToUniversalTime)

   18       objItem.File.ParentFolder.Files.Add("myDoc2.tif", stream, props)

   19       stream.Dispose()

   20     Catch ex As Exception

   21       MessageBox.Show(ex.ToString)

   22     Finally

   23       If Not objSite Is Nothing Then objSite.Dispose()

   24       If Not objWeb Is Nothing Then objWeb.Dispose()

   25       Me.Cursor = Cursors.Default

   26     End Try

   27   End Sub

 

Considerazioni finali

Si tratta di una mia personalissima ipotesi, ma secondo me i team di sviluppo della funzionalità di update e di quella di addnew sono distinti, separati e non comunicanti.

posted @ mercoledì 2 luglio 2008 22.59 | Feedback (0) | Filed Under [ MOSS07 Tips .Net ]

[OT] Aggiornamento Leopard

Queto post è veramente offfffffff topic!

Infatti è il classico post da macchista (passatemi il neologismo).

 

Ho aggiornato con soddisfazione Leopard nel mio macbook! :D

 

 

leopard-10.5.4

posted @ mercoledì 2 luglio 2008 19.51 | Feedback (0) | Filed Under [ [OT] Relax ]

martedì 1 luglio 2008

Testo che scompare dalle textbox multilinea in Windows Vista

Ho riscontrato in una mia applicazione uno strano comportamento.

Il testo di una textbox multilinea scompariva e riappariva passandogli sopra con il mouse. Oltre ad essere multilinea aveva anche una scrollbar verticale ed era inserita in un controllo SplitContainer che a sua volta era all'interno di una TabPage. Il comportamento si verificava solo con Windows Vista.

 

Per riprodurre il problema è sufficiente creare una applicazione Windows Forms, mettere un TabControl, dentro ad un suo TabPage mettere uno SplitContainer, dentro ad un pannello dello SplitContainer mettere un Textbox multilinea con Scrollbar verticale. Natuaralmente bisogna essere su un sistema con Windows Vista (su XP tutto OK...)

 

image

 

 

A questo punto basta mandare in esecuzione, scrivere del testo nella textbox muovere un po' il mouse ed osservare il comportamento.

 

Per risolvere il problema mi viene in auto questo post, in cui si suggeriscono due vie:

  1. Impostare a False la proprietà UseVisualStyleBackColor del TabPage

    Me.TabPage1.UseVisualStyleBackColor = False

  2. Sostituire la textbox con una RichTextBox
  3. Impostare la proprietà Backcolor del TabPage ad un valore diverso da Trasparent (nuova soluzione indicatami da Riccardo)

 

Da notare che per la prima soluzione occorre impostare la proprietà da codice, per esempio nella load della pagina, in quanto se la si imposta dalla finestra delle proprietà del TabPage la modifica non viene recepita da Visual Studio (succederà solo a me?).

Inoltre la prima soluzione funziona per l'esempio che ho proposto sopra, ma evidentemente non funziona sempre. Tant'è che per la mia applicazione originale non ha funzionato! Per cui ho adottato la seconda.

Tutte le soluzioni hanno delle conseguenze grafiche, nel senso che modificano l'aspetto originale della form (nel primo caso lo sfondo del TabPage diventa grigetto, nel secondo il bordo della RichTextBox ha una profondità più marcata rispetto a quello del textbox, nel terzo si deve impostare un colore di sfondo) per cui nessuna delle tre è "perfetta". Tuttavia meglio di niente...

posted @ martedì 1 luglio 2008 19.08 | Feedback (2) | Filed Under [ Tips VS2005 .Net Vista ]

lunedì 16 giugno 2008

Aggiungere un campo non nullo e senza default ad una tabella di SQL Server


Problema:

Abbiamo una tabella in un database SQL Server, vogliamo scrivere uno script che aggiunge un campo che sia non nullo e senza default.

 

Svolgimento:

Il semplice script seguente...


alter table MiaTabella

add MioCampo varchar(255) not null 

 

...potrebbe non funzionare se la tabella ha già dei record. Infatti Una volta aggiunta la nuova colonna, che valore avrà per i record già presenti? Non potrà essere nulla, ma non è specificato un valore di default.

Per cui dovremmo scrivere il seguente script:


alter table MiaTabella

add MioCampo varchar(255) not null default ('') 

 

In questo modo i vecchi record avranno come valore la stringa vuota e quindi lo script potrà essere eseguito.

Però a questo punto abbiamo bisogno di rimuovere il defualt.

La cosa non è banale: in SQL Server non potremo scrivere uno script del tipo ALTER TABLE per rimuove il default (lo potremmo fare con SQL Server Compact Edition). L'unico modo è quello di rimuovere il CONSTRAINT che definisce il default.

Ma come si chiama questo constraint? Quel nome viene creato da SQL Server e nel caso dello script sopra sarà del tipo:

DF__MiaTabella__MioCa__6E01572D

La soluzione che ho trovato io fa uso di un diverso script con sui viene definito esplicitamente il nome del CONSTRAINT, dandomi quindi la possibilità di rimuoverlo in modo molto semplice:

 

/* Aggiunge il campo MioCampo ed il constraint

(DF_MiaTabella_MioCampo) per il default temporaneo */

alter table MiaTabella

add MioCampo varchar(255) not null,

    constraint DF_MiaTabella_MioCampo default '' for MioCampo

go

 

/* Rimuove il default temporaneo */

alter table MiaTabella

drop constraint DF_MiaTabella_MioCampo

go

posted @ lunedì 16 giugno 2008 3.45 | Feedback (1) | Filed Under [ Tips SQL Server ]

martedì 29 aprile 2008

How to refresh the CRL cache on Windows Vista

Posto nel mio blog (perché così me lo ritrovo subito) un post (liberamente modificato) che mi è stato utile un paio di volte.

By default, Windows is caching Certificate Revocation Lists (CRL) and CA certificates to quickly verify certificate chains. The downside of this behavior is that a newer CRL is not picked up by the client until the locally cached CRL has expired.

Windows versions before Windows Vista do not support deletion or a forced update of the CRL cache.

You can view what is in your current CRL cache with the following command:
certutil -URLcache CRL

You can delete what is in your current CRL cache with the following command:
certutil -URLcache CRL delete

 

On Windows Vista, CAPI 2.0 has support to set a expiry date for the CRL and OCSP cache. You can use certutil to set a date and time when all cache entries become invalid. The following commands require administrative permission on the system.

To see when the cache was invalidated the last time, perform this command:
certutil –getreg chain\ChainCacheResyncFiletime

Note: If the ChainCacheResyncFiletime was never set manually before, the registry key does not exist and the following error message is shown:

CertUtil: -getreg command FAILED: 0x80070002 (WIN32: 2)
CertUtil: The system cannot find the file specified.

The error can be ignored because default CRL caching takes place in this case.

If the @now parameter is used, all cached entries are invalidated immediately.
certutil -setreg chain\ChainCacheResyncFiletime @now

To keep the cached entries for another 3 days and 6 hours, use this command:
certutil –setreg chain\ChainCacheResyncFiletime @now+3:6

To delete a registry value:
certutil –delreg chain\ChainCacheResyncFiletime

posted @ martedì 29 aprile 2008 22.42 | Feedback (1) | Filed Under [ Tips Vista ]

giovedì 17 aprile 2008

Open XML Format SDK

Pubblicato l'Open XML Format SDK (April CTP):

http://www.microsoft.com/downloads/details.aspx?FamilyId=AD0B72FB-4A1D-4C52-BDB5-7DD7E816D046&displaylang=en

 

Mentre la versione online dell'SDK è all'indirizzo:

http://msdn2.microsoft.com/en-us/library/bb448854.aspx

 

 

Fonte: Erika Ehrli

posted @ giovedì 17 aprile 2008 18.45 | Feedback (0) | Filed Under [ .Net XML MS Office ]

venerdì 11 aprile 2008

[OT] KBox Spring 2008

Faccio un po' di pubblicità per un evento organizzato dall'azienda per cui lavoro:

  • è un evnto in cui si parla di Knowledge Management
  • è organizzato in collaborazione con Microsoft
  • è gratuito

 

 

KBox Spring 2008


 


 


 


 


 


 

posted @ venerdì 11 aprile 2008 3.31 | Feedback (6) | Filed Under [ [OT] Relax ]

Powered by: