Aggiornamento per Quiz nell'android market con un inserimento di 210 nuovi quiz italiani in varie categorie (da ora 150 domande per ogni categoria), aggiunte e migliorate alcune risposte, risolto bug nelle soluzioni (le risposte nella categoria informatica venivano duplicate), migliorato l'aiuto per la risposta esatta, aumentato il punteggio massimo a 1.000.000.000!
Sorgenti, linguaggi, best practice, suggerimenti, sul mondo della programmazione e non solo
sabato 24 agosto 2013
martedì 20 agosto 2013
Ordinamento ascendente e decrescente su griglia in c#
Un pochino laborioso, ma con questo esempio si può creare un "sorting" su un qualsiasi campo di una GridView con c#.
Selezionando con il mouse la freccia "up" o "down" vicino al campo da ordinare, tutti i campi della griglia si ordinano automaticamente.
La griglia è il componente classico GridView utilizzato in una pagina aspx con Visual Studio 2010 framework 4.0 (ma si trova anche con il 3.5).
Di seguito il codice della pagina aspx e il codice da integrare nel file .cs
(Da non dimenticare di reperire le immagini delle frecce "up" e "down").
Selezionando con il mouse la freccia "up" o "down" vicino al campo da ordinare, tutti i campi della griglia si ordinano automaticamente.
La griglia è il componente classico GridView utilizzato in una pagina aspx con Visual Studio 2010 framework 4.0 (ma si trova anche con il 3.5).
Di seguito il codice della pagina aspx e il codice da integrare nel file .cs
(Da non dimenticare di reperire le immagini delle frecce "up" e "down").
<%@ Page Title="Home page" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> <asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent"> <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" OnPageIndexChanging="GridView1_PageIndexChanging" OnSorting="GridView1_Sorting" OnRowCreated="GridView1_RowCreated" AllowSorting="True" DataKeyNames="id" AllowPaging="True" PageSize="15" PageIndex="0" PagerSettings-Mode="NumericFirstLast" PagerSettings-FirstPageText="Prima" PagerSettings-LastPageText="Ultima" EmptyDataText="No data available." > <Columns> <asp:TemplateField HeaderText="id" ItemStyle-Width="50" SortExpression="id"> <ItemStyle HorizontalAlign="left"/> <ItemTemplate> <%# Eval("id")%> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="description" ItemStyle-Width="150" SortExpression="description"> <ItemStyle HorizontalAlign="left"/> <ItemTemplate> <%# Eval("description")%> </ItemTemplate> </asp:TemplateField> </Columns> </asp:GridView> </asp:Content>
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Data; public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) CaricaGridView("id", SortDirection.Ascending); } protected DataTable dataTable() { DataTable dt = new DataTable(); dt = new DataTable("dt"); dt.Columns.Add(new DataColumn("id", typeof(string))); dt.Columns.Add(new DataColumn("description", typeof(string))); DataRow dataRow = dt.NewRow(); dataRow = dt.NewRow(); dataRow["id"] = "1"; dataRow["description"] = "ALFAROMEO"; dt.Rows.Add(dataRow); dataRow = dt.NewRow(); dataRow["id"] = "2"; dataRow["description"] = "FORD"; dt.Rows.Add(dataRow); dataRow = dt.NewRow(); dataRow["id"] = "3"; dataRow["description"] = "VOLVO"; dt.Rows.Add(dataRow); return dt; } protected void CaricaGridView(string sortString, SortDirection sortDirection) { DataView dataView = null; try { dataView = new DataView(dataTable()); if (sortDirection.Equals(SortDirection.Ascending)) dataView.Sort = sortString + " " + "ASC"; else dataView.Sort = sortString + " " + "DESC"; GridView1.DataSource = dataView; GridView1.DataBind(); } catch (Exception ex) { } finally { if (dataView != null) dataView.Dispose(); } } protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e) { GridView1.PageIndex = e.NewPageIndex; DataView dataView = null; try { dataView = new DataView(dataTable()); String SortExpDirection = Convert.ToString(ViewState["SortExpression"]); if (SortExpDirection == "") SortExpDirection = "Id"; if (Convert.ToString(ViewState["SortDirection"]).Equals("")) ViewState["SortDirection"] = "DESC"; SortExpDirection += " " + ViewState["SortDirection"]; dataView.Sort = SortExpDirection; GridView1.DataSource = dataView; GridView1.DataBind(); } catch (Exception ex) { } finally { if (dataView != null) dataView.Dispose(); } } protected void GridView1_Sorting(object sender, GridViewSortEventArgs e) { if (ViewState["SortExpression"] != null) { String sortDirection = Convert.ToString(ViewState["SortDirection"]); String sortExpression = Convert.ToString(ViewState["SortExpression"]); if (sortExpression == e.SortExpression) { ViewState["SortDirection"] = ChangeDirection(sortDirection); } else { ViewState["SortExpression"] = e.SortExpression; ViewState["SortDirection"] = "ASC"; } } else { ViewState["SortExpression"] = e.SortExpression; ViewState["SortDirection"] = "ASC"; } DataView dataView = null; try { dataView = new DataView(dataTable()); String SortExpDirection = Convert.ToString(ViewState["SortExpression"]); SortExpDirection += " " + ViewState["SortDirection"]; dataView.Sort = SortExpDirection; GridView1.DataSource = dataView; GridView1.DataBind(); } catch (Exception ex) { } finally { if (dataView != null) dataView.Dispose(); } } protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e) { try { if (e.Row.RowType == DataControlRowType.Header) { string NomeColonna; for (int i = 0; i < 4; i++) { // Recupero il controllo che sta nella cella dell'header //che è un LinkButton LinkButton LinkButtonOrdinamento = (LinkButton)e.Row.Cells[i].Controls[0]; NomeColonna = LinkButtonOrdinamento.Text; //Creo il controllo ImageButton ImageButton ImageButtonOrdinamento = new ImageButton(); ImageButtonOrdinamento.CommandName = LinkButtonOrdinamento.CommandName; string commandArgument = LinkButtonOrdinamento.CommandArgument; ImageButtonOrdinamento.CommandArgument = commandArgument; ImageButtonOrdinamento.ToolTip = "Ordina per " + NomeColonna; ImageButtonOrdinamento.Width = (Unit)10; //stabilisco l'immagine da visualizzare ImageButtonOrdinamento.ImageUrl = "~/images/sort_up_blank.png"; if (ViewState["SortExpression"] != null) { String sortExpression = Convert.ToString(ViewState["SortExpression"]); if (LinkButtonOrdinamento.CommandArgument == sortExpression) { if (Convert.ToString(ViewState["SortDirection"]) == "DESC") { ImageButtonOrdinamento.ImageUrl = "~/images/sort_down.png"; } else { ImageButtonOrdinamento.ImageUrl = "~/images/sort_up.png"; } } } ImageButtonOrdinamento.Width = Unit.Pixel(16); ImageButtonOrdinamento.Height = Unit.Pixel(16); //Creo il controllo Label Label labelNomeColonna = new Label(); labelNomeColonna.Text = NomeColonna + " "; Table tableOrd = new Table(); TableRow tableRowOrd = new TableRow(); TableCell tableCell0 = new TableCell(); tableCell0.Controls.Add(labelNomeColonna); tableRowOrd.Cells.Add(tableCell0); TableCell tableCell1 = new TableCell(); tableCell1.Controls.Add(ImageButtonOrdinamento); tableRowOrd.Cells.Add(tableCell1); tableOrd.Rows.Add(tableRowOrd); //cancello il controllo linkbutton dalla cella e.Row.Cells[i].Controls.Remove(LinkButtonOrdinamento); //Aggiungo il nuovo controllo e.Row.Cells[i].Controls.Add(tableOrd); } } } catch (Exception ex) { } } public static String ChangeDirection(String oldDirection) { String newDirection = ""; switch (oldDirection) { case "ASC": newDirection = "DESC"; break; default: newDirection = "ASC"; break; } return newDirection; } }
giovedì 8 agosto 2013
Migliorare e incrementare traffico al blog gratuitamente
Una delle tante soluzioni gratuite per incrementare del traffico sul proprio blog, e quindi farsi conoscere meglio,
e magari incrementare traffico su app per Android o Iphone o comunque per smartphone sempre che qualcuno le abbia online sui vari market,
è quella di inserire il proprio blog su portali che non richiedono registrazioni come ad esempio:
pingler.com
pingomatic.com
pingoat.com
feedshark.com
androidappsgallery.com
apps400.com
androidappsreview.com
mobileappsgallery.com
androidtapp.com
scrubtheweb.com
Se ne trovano molti altri per promuovere il proprio blog, ma spesso viene richiesta una registrazione (spesso gratuita ma con una piccola perdita di tempo per il solito inserimento dati).
Per particolari accorgimenti o studio di traffico o parole chiave da utlizzare al meglio, arrivano sempre in aiuto le risorse Google all'indirizzo http://www.google.com/webmasters loggandosi con il proprio account Google e gestendo il proprio sito di interesse.
Lascio questo spazio aperto per chi vuole inserirne degli altri, magari ne nascono di nuovi, ma sempre ed esclusivamente gratuiti e senza alcuna registrazione.
e magari incrementare traffico su app per Android o Iphone o comunque per smartphone sempre che qualcuno le abbia online sui vari market,
è quella di inserire il proprio blog su portali che non richiedono registrazioni come ad esempio:
pingler.com
pingomatic.com
pingoat.com
feedshark.com
androidappsgallery.com
apps400.com
androidappsreview.com
mobileappsgallery.com
androidtapp.com
scrubtheweb.com
Se ne trovano molti altri per promuovere il proprio blog, ma spesso viene richiesta una registrazione (spesso gratuita ma con una piccola perdita di tempo per il solito inserimento dati).
Per particolari accorgimenti o studio di traffico o parole chiave da utlizzare al meglio, arrivano sempre in aiuto le risorse Google all'indirizzo http://www.google.com/webmasters loggandosi con il proprio account Google e gestendo il proprio sito di interesse.
Lascio questo spazio aperto per chi vuole inserirne degli altri, magari ne nascono di nuovi, ma sempre ed esclusivamente gratuiti e senza alcuna registrazione.
venerdì 2 agosto 2013
Caricamento dati da MS Excel in Visual Basic 6
Con queste poche righe di codice è possibile leggere dei dati su di un file MS Excel e portarli in un oggetto list di Visual Basic.
Si crea una form tramite progetto "Exe" con un oggetto list chiamato List1, nel menu a tendina del progetto si fa riferimento all'oggetto MS Excel, e si integrano queste righe al caricamento della form.
Di seguito il sorgente e screenshot:
Form di esempio con una lista
Riferimento dell'oggetto Excel
Dati su foglio Excel
Record sulla lista
Si crea una form tramite progetto "Exe" con un oggetto list chiamato List1, nel menu a tendina del progetto si fa riferimento all'oggetto MS Excel, e si integrano queste righe al caricamento della form.
Di seguito il sorgente e screenshot:
Private Sub Form_Load()
Dim objXls As Excel.Application
Dim wb As Workbook
Dim ws As Worksheet
Dim varValue As Variant
Dim i As Integer
Set objXls = New Excel.Application
Set wb = objXls.Workbooks.Open("C:\Documents and Settings\admin\Desktop\car\car.xls")
Set ws = wb.Worksheets("CAR")
For i = 2 To 11
varValue = ws.Cells(i, 1) & " " & ws.Cells(i, 2)
List1.AddItem (varValue)
Next
wb.Close
objXls.Quit
Set ws = Nothing
Set wb = Nothing
Set objXls = Nothing
End Sub
Form di esempio con una lista
Riferimento dell'oggetto Excel
Dati su foglio Excel
Record sulla lista
Iscriviti a:
Post (Atom)