Asp.Net : Randomizzare una Lista con Linq

25. maggio 2010

Data una classe Employee

   1: public class Employee
   2: {
   3:     public int Id {get; set;}
   4:  
   5:     public string Name {get; set;}
   6: }

utilizzando Linq è possibile randomizzare facilmente una lista di oggetti Employee .

   1: ist<Employee> list = new List<Employee>();
   2:  
   3: list.Add(new Employee { Id = 1, Name = "Davolio Nancy" });
   4: list.Add(new Employee { Id = 2, Name = "Fuller Andrew" });
   5: list.Add(new Employee { Id = 3, Name = "Leverling Janet" });
   6: list.Add(new Employee { Id = 4, Name = "Peacock Margaret" });
   7: list.Add(new Employee { Id = 5, Name = "Buchanan Steven" });
   8: list.Add(new Employee { Id = 6, Name = "Suyama Michael" });
   9: list.Add(new Employee { Id = 7, Name = "King Robert" });
  10: list.Add(new Employee { Id = 8, Name = "Callahan Laura" });
  11: list.Add(new Employee { Id = 9, Name = "Dodsworth Anne" });
  12:  
  13: list = list.OrderBy(x => Guid.NewGuid()).ToList();

asp.net, Tips , ,

Asp.net : FindControl su un controllo CreateUserWizard

19. maggio 2010
Codice per recuperare un controllo contenuto in un CreateUserWizard :
   1: Label lb = CreateUserWizard1.CompleteStep.ContentTemplateContainer.FindControl("lblUsername") as Label; 
oppure nel caso di un TemplateWizardStep
   1: TemplatedWizardStep step = (TemplatedWizardStep) CreateUserWizard1.WizardSteps[1];
   2: Label lb = (Label)step.ContentTemplateContainer.FindControl("label1");
oppure più semplicemente
   1: Label lb = (Label)MyStep.ContentTemplateContainer.FindControl("label1");
dove MyStep è un TemplateWizardStep
   1: <asp:TemplatedWizardStep ID="MyStep" runat="server" Title="Name of step">
   2:     <ContentTemplate>
   3: ...
   4: ...

asp.net, Tips ,

Il 12-04-2010 è il giorno del lancio di Visual Studio 2010 e .NET Framework 4

14. gennaio 2010

Dal blog di Rob Caron su MSDN Blogs :

Short but sweet, Visual Studio 2010 and .NET Framework 4 will launch on Monday, 12 April 2010.

asp.net ,

Asp.net : Problemi di visualizzazione del menu con Chrome o Safari

10. dicembre 2009

Utilizzando il browser Google Crome o Safari è presente un problema nella visualizzazione del controllo Menu di Asp.net.

Per risolvere il problema basta creare un file di tipo browser file in App_Browsers


Inserendo questo codice

<browsers>
  <browser refID="Safari1Plus">
    <controlAdapters>
      <adapter controlType="System.Web.UI.WebControls.Menu"
               adapterType="" />
    </controlAdapters>
  </browser>
</browsers>

oppure alternativamente, inserendo questo codice nell'evento PreInit della pagina

 

protected void Page_PreInit(object sender, EventArgs e)
         {
             // This is necessary because Safari and Chrome browsers don't display the Menu control correctly.
             // All webpages displaying an ASP.NET menu control must inherit this class.
             if (Request.ServerVariables["http_user_agent"].IndexOf("Safari", StringComparison.CurrentCultureIgnoreCase) != -1)
                 Page.ClientTarget = "uplevel";
         }

asp.net, Tips , , ,

Asp.net : Esportare dati verso Excel

12. ottobre 2009

Utilissimo articolo che mostra come aggiungere alla nostra web application un pulsante per esportare dati in formato xls da un database, un web service o altro.

L'articolo mostra differenti approcci per risolvere il problema:

  1. Generare un file CSV
  2. Generate un file XML
  3. Generare da un controllo GridView
  4. Generare un file Excel usando Open XML SDK 2.0

Qui l'articolo completo

 

asp.net, Tips , , , , ,

LINQ to SQL Connection Strings

22. agosto 2009

Interessante articolo su come ovviare al problema della stringa di connessione al db per progetti che utilizzano LINQ to SQL.

Un uso non corretto della stringa, soprattutto nel caso che il dbml sia integrato in una dll, genera questo messaggio :

An error has occurred while establishing a connection to the server.  When connecting to SQL Server 2005, this failure may be caused by the fact that under the default settings SQL Server does not allow remote connections. (provider: Named Pipes Provider, error: 40 – Could not open a connection to SQL Server)

La soluzione è disattivare la creazione automatica della stringa di connessione all'atto dell'aggiunta del file dbml, rimuovendola manualmente e impostando “Application Settings” a false.
In questo modo otterremo questo messaggio :

Error:
‘PageDataContext’ does not contain a constructor that takes ‘0′ arguments

A questo punto creata la nostra stringa di connessione così

public static string conn = ConfigurationManager.ConnectionStrings["myConnectionString"].ToString();

facendolo puntare allla connessione corrente specificata nel web.config corrente, e passandolo ad ogni inizializzazione dell'oggetto data context così:

PageDataContext db = new PageDataContext(conn);

A questo punto tutto dovrebbe funzionare...Wink

 

Maggiori informazioni qui

asp.net, Tips , , ,

Asp.net : LINQ to SQL compiler error CS1519: Invalid token 'void' in class, struct, or interface member declaration

15. giugno 2009

A mia futura memoria e per chi ne avesse bisogno.
Aggiungendo ad un progetto esistente una classe LINQ to SQL si ottiene questo messaggio di errore :

Invalid token 'void' in class, struct, or interface member declaration

oppure

Token non valido 'void' nella dichiarazione del membro della classe, della struttura o dell'interfaccia.


su queste linee di codice:


#region Extensibility Method Definitions
  partial void OnCreated();
  partial void InsertProfileExtended(ProfileExtended instance);
  partial void UpdateProfileExtended(ProfileExtended instance);
  partial void DeleteProfileExtended(ProfileExtended instance);
#endregion


Questa la soluzione per risolvere il problema. Basta aggiungere il codice seguente al web.config


<class="tag">system.codedom>
<class="tag">compilers>
<class="tag">compilerclass="attr"> language=class="attrv">"c#;cs;csharp"class="attr"> extension=class="attrv">".cs"class="attr"> warningLevel=class="attrv">"4"class="attr"> type=class="attrv">"Microsoft.CSharp.CSharpCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<class="tag">providerOptionclass="attr"> name=class="attrv">"CompilerVersion"class="attr"> value=class="attrv">"v3.5"/>
<class="tag">providerOptionclass="attr"> name=class="attrv">"WarnAsError"class="attr"> value=class="attrv">"false"/>
</class="tag">compiler>
<class="tag">compilerclass="attr"> language=class="attrv">"vb;vbs;visualbasic;vbscript"class="attr"> extension=class="attrv">".vb"class="attr"> warningLevel=class="attrv">"4"class="attr"> type=class="attrv">"Microsoft.VisualBasic.VBCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<class="tag">providerOptionclass="attr"> name=class="attrv">"CompilerVersion"class="attr"> value=class="attrv">"v3.5"/>
<class="tag">providerOptionclass="attr"> name=class="attrv">"OptionInfer"class="attr"> value=class="attrv">"true"/>
<class="tag">providerOptionclass="attr"> name=class="attrv">"WarnAsError"class="attr"> value=class="attrv">"false"/>
</class="tag">compiler>
</class="tag">compilers>
</class="tag">system.codedom>

asp.net, Tips , , ,

Problema Asp.net LoginStatus e UrlRewriting : la soluzione

27. aprile 2009

Problemi con i controlli di accesso di asp.net (es. LoginStatus ) in combinazione con l'UrlRewriting ?

Ecco la soluzione :

protected override void OnLoad(EventArgs e)
{
// Set Logout Action and Url
  this.LoginStatus1.LogoutPageUrl = Context.Request.Url.AbsolutePath;
  this.LoginStatus1.LogoutAction = LogoutAction.Redirect;

  // If User not authenticated we change LoginStatus PostBackUrl manually
  if (!Page.User.Identity.IsAuthenticated)
  {
   String loginUrl = FormsAuthentication.LoginUrl + "?ReturnUrl=" + Context.Request.Url.AbsolutePath;
   foreach (Control c in this.LoginStatus1.Controls)
   {
    if (c is ImageButton)
    {
     ((ImageButton)c).PostBackUrl = loginUrl;
    }
    if (c is LinkButton)
    {
     ((LinkButton)c).PostBackUrl = loginUrl;
    }
   }
  }
  base.OnLoad(e);
}

 

fonte

asp.net, Tips , , ,