25 messaggi dal 06 settembre 2002
ho provato ad aggiungere questo codice:

DataColumn _ID = new DataColumn("ID", System.Type.GetType("System.Int32"));
_ID.AutoIncrement = true;
_ID.AutoIncrementSeed = 1;
_ID.AutoIncrementStep = 1;
_ID.ReadOnly = true;

_tblCartelle.Columns.Add(_ID);

for (int i = 0; i < subDirectories.Length; i++)
{
DataRow dtrRiga = _tblCartelle.NewRow();
_tblCartelle.Rows.Add(dtrRiga);
}
_dataview = _tblCartelle.DefaultView;
GridView1.DataSource = _dataview;
GridView1.DataBind();


ma il risultato e'


Decrizione DataCreazione ID
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
RECYCLER 15/01/2004 0.00.00
System Volume Information 15/01/2004 0.00.00
WINDOWS 15/01/2004 0.00.00
WUTemp 15/01/2004 0.00.00
Multimedia 07/06/2005 0.00.00
TmpTangram 04/07/2005 0.00.00
Intel 17/11/2005 0.00.00
MSOCache 03/02/2006 0.00.00
Antivirus 07/02/2006 0.00.00
Documents and Settings 16/04/2008 0.00.00
drv 16/04/2008 0.00.00
mch 16/04/2008 0.00.00
PKG 16/04/2008 0.00.00
Program Files 16/04/2008 0.00.00
UNISIG 16/04/2008 0.00.00
INSIGHT 03/12/2008 0.00.00
sm 03/12/2008 0.00.00
fix 04/12/2008 0.00.00
Segnalazioni 04/12/2008 0.00.00
temp 04/12/2008 0.00.00
prova 18/12/2008 0.00.00


inserimento degli indici, ma le celle di descrizione e data vuote in corrispondenza degli indicidi successivamente popolamento delle celle descrizione e data ma in ogni corrispondenza vuote quelle degli indici

grazie
beh se tu prima hai popolato il datatable con la query precedente e poi hai scritto quel codice è normale.

Devi crearti un secondo datatable da associare poi alla gridview. Il secondo conterrà la colonna in più con il contatore.

Cicli sulle righe del primo e le aggiungi al secondo.
Tutto qui.

Ormai programmano tutti... ma la professionalità appartiene a pochi
25 messaggi dal 06 settembre 2002
ci avevo gi&agrave; provato nel modo seguente:

using System;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.IO;
using System.Xml;
using System.Collections;

public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{

Int32 idCartella = Int32.Parse(Utility.retConfig("idCartella"));

//qui inserisco il percorso della cartella sul server USMATWV01
string strPerc = Utility.retConfig("indirizzoCartelle");

DirectoryInfo miaDir = null;

//Definizioni per DataGrid
DataTable _tblCartelle = new DataTable("tblCartelle");
DataTable _tblCartelleID = new DataTable("tblCartelleID");
DataColumn _Decrizione = new DataColumn("Decrizione");
DataColumn _DataCreazione = new DataColumn("DataCreazione", System.Type.GetType("System.DateTime"));
DataView _dataview = new DataView();
DataView _dataviewID = new DataView();

try
{

//Utilizzo DataGrid

_tblCartelle.Columns.Add(_Decrizione);
_tblCartelle.Columns.Add(_DataCreazione);

miaDir = new DirectoryInfo(strPerc);
DirectoryInfo[] subDirectories = miaDir.GetDirectories();

for (int i = 0; i < subDirectories.Length; i++)
{
DataRow dtrRiga = _tblCartelle.NewRow();
dtrRiga["Decrizione"] = subDirectories[i].Name;
dtrRiga["DataCreazione"] = Utility.GetDate(DateTime.Parse(subDirectories[i].CreationTime.ToShortDateString()));
_tblCartelle.Rows.Add(dtrRiga);
}

_dataview = _tblCartelle.DefaultView;
_dataview.Sort = " DataCreazione ASC ";
GridView1.DataSource = _dataview;
GridView1.DataBind();

//Copio i dati in un dataTable temporaneo
_tblCartelleID = _tblCartelle.Clone();

DataColumn _ID = new DataColumn("ID", System.Type.GetType("System.Int32"));
_ID.AutoIncrement = true;
_ID.AutoIncrementSeed = 1;
_ID.AutoIncrementStep = 1;
_ID.ReadOnly = true;

_tblCartelleID.Columns.Add(_ID);

for (int i = 0; i < _tblCartelle.Rows.Count; i++)
{
_tblCartelleID.ImportRow(_tblCartelle.Rows[i]);
}
GridView1.DataSource = _tblCartelleID;
GridView1.DataBind();
}
catch (Exception ex)
{
Response.Write("Accesso negato<br/> Si &egrave; verificato l'errore <b>");
Response.Write(ex.ToString() + "</b>");
Response.End();
}
}
}

ma perdo nel secondo datatable l'ordinamento dato precedentemente.
25 messaggi dal 06 settembre 2002
OK RISOLTO NEL SEGUENTE MODO:

using System;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.IO;
using System.Xml;
using System.Collections;

public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{

Int32 idCartella = Int32.Parse(Utility.retConfig("idCartella"));

//qui inserisco il percorso della cartella sul server USMATWV01
string strPerc = Utility.retConfig("indirizzoCartelle");

DirectoryInfo miaDir = null;

DataTable _tblCartelle = new DataTable("tblCartelle");
DataTable _tblCartelleID = new DataTable("tblCartelleID");
DataColumn _Decrizione = new DataColumn("Decrizione");
DataColumn _DataCreazione = new DataColumn("DataCreazione", System.Type.GetType("System.DateTime"));
DataView _dataview = new DataView();

try
{

//Utilizzo DataTable

_tblCartelle.Columns.Add(_Decrizione);
_tblCartelle.Columns.Add(_DataCreazione);

miaDir = new DirectoryInfo(strPerc);
DirectoryInfo[] subDirectories = miaDir.GetDirectories();

for (int i = 0; i < subDirectories.Length; i++)
{
DataRow dtrRiga = _tblCartelle.NewRow();
dtrRiga["Decrizione"] = subDirectories[i].Name;
dtrRiga["DataCreazione"] = Utility.GetDate(DateTime.Parse(subDirectories[i].CreationTime.ToShortDateString()));
_tblCartelle.Rows.Add(dtrRiga);
}

_dataview = _tblCartelle.DefaultView;
GridView1.DataSource = _dataview;

//Copio i dati in un dataTable temporaneo
_tblCartelleID = _tblCartelle.Clone();

DataColumn _ID = new DataColumn("ID", System.Type.GetType("System.Int32"));
_ID.AutoIncrement = true;
_ID.AutoIncrementSeed = 1;
_ID.AutoIncrementStep = 1;
_ID.ReadOnly = true;

_tblCartelleID.Columns.Add(_ID);

DataRow[] RowSort = _tblCartelle.Select("", "DataCreazione");

for (int i = 0; i < _tblCartelle.Rows.Count; i++)
{
_tblCartelleID.ImportRow(RowSort[i]);
}

GridView1.DataSource = _tblCartelleID;
GridView1.DataBind();
}
catch (Exception ex)
{
Response.Write("Accesso negato<br/> Si &egrave; verificato l'errore <b>");
Response.Write(ex.ToString() + "</b>");
Response.End();
}
}
}


MI DATE UNO SGUARDO AL CODICE CHE HO SCRITTO.

CMQ 1000 GRAZIE E TANTI TANTI A U G U R I
direi che questo:

_dataview = _tblCartelle.DefaultView;
GridView1.DataSource = _dataview;

non ti serve più.

c'è qualche motivo per cui non puoi aggiungere da subito la colonna Id? L'ordinamento per data, giusto?

Comunque per rendere tutto più performante, se non ti serve l'id nel datatable per qualche motivo, puoi evitare di aggiungere la colonna e rebindare alla gridview il datatable precedente ordinato. Poi sull'aspx, nel gridview aggiungi la prima colonna con <%# (Container.ItemIndex + 1) %> , spero di non aver sbagliato la sintassi.
Modificato da manuel0081 il 22 dicembre 2008 11.30 -

Ormai programmano tutti... ma la professionalità appartiene a pochi
25 messaggi dal 06 settembre 2002
giusto il primo GridView1.DataSource = _dataview; non mi serve pi&ugrave;, infatti non posso inserire da subito la colonna ID perch&egrave; devo prima ordinare per data.
no id mi serve nel datatable per gli sviluppi successivi.

grazie

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.