Textbox in dataview

martedì 01 febbraio 2005 - 14.02

sig Profilo | Junior Member

devo inserire in un dataview una colonna contenente, ad ogni riga, una textbox in cui inserire una stringa, come posso fare ???

Grazie anticipatamente

Brainkiller Profilo | Guru

Una DataView è una vista logica in memoria di una tabella dati.
Non è visibile, come fai ad inserire una textbox ?

ciao
david

sig Profilo | Junior Member

Premetto che sono ignorante in materia MA credo che in ASP 2.0 dataview sia il sostituto di datagrid.
Comunque come inserisco le textbox in un datagrid ???

Grazie ancora per la disponibilità dimostrata.

sig Profilo | Junior Member

Hai ragione GridView non dataView, come posso inserire in un gridView, ad ogni riga, una colonna formata da textbox ????

GvnnRules Profilo | Senior Member

Ciao,
Per aggiungere una colonna con dei texbox non cambia molto dal vecchio datagrid, devi aggiungere un TemplateField (che una volta si chiamava TemplateColumn) con all'interno un textBox, ecco il codice:

<asp:GridView ID="GridView1" Runat="server">
<Columns>
<asp:TemplateField><EditItemTemplate>
<asp:TextBox ID="TextBox1" Runat="server"></asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>

Ciaoz

Gvnn

sig Profilo | Junior Member

GRAZIE, lo provo subito !!!

sig Profilo | Junior Member

Il textbox me lo inserisce MA ora ho il seguente (sucessivo) problema:

devo acquisire in un Access DB il contenuto delle textbox "pippo" (non è possibile assegnare per ogni row un nome differente alla textbox ??) ma il component textbox "pippo" non mi viene trovato quando provo a cercarlo nel file c#; come posso fare ???

Grazie anticipatamente

GvnnRules Profilo | Senior Member

E qua arria il bello!
Non devi nominare il textbox in modo diverso per ogni riga, devi praticamente ciclare per ogni riga del tuo gridview e utilizzare il metodo find control ... diciamo una cosa del genere (scusa ma è in c#)

foreach (GridViewRow myRow in GridView1.Rows)
{
TextBox myText = (TextBox)myRow.FindControl("mioTextBox");
Response.Write(myText.Text);
}

Se hai qualche dubbio chiedi pure.

Ciaoz

sig Profilo | Junior Member

Grazie, la tua spiegazione è molto chiara e quindi nessun problema.

Un'altra domanda: dato che, per motivi di spazio, il gridview è stato "paginato" il codice funziona per tutte le pagine oppure solo per quella selezionata ??? nel primo caso come posso fare (oltre a creare una lista e registare tutto alla fine)

GRAZIE ANCORA

GvnnRules Profilo | Senior Member

Purtroppo se lo hai paginato tu lavori solo sulle righe che ci sono nella tua pagina, devi inventarti una procedura che salvi pagina per pagina.

Ciaoz

Gvnn

sig Profilo | Junior Member

GRAZIE

sig Profilo | Junior Member

Sfrutto ancora le tue conoscenze:

se voglio inserire nello stesso textbox presente del gridview una stringa quando viene creato cosa devo fare ???

Grazie ancora

GvnnRules Profilo | Senior Member

Devi praticamente intercettare l'evento di RowDataBound, ad esempio mettiamo che passi una datatable al tuo datagrid e vuoi scrivere nel textbox il valore del campo della tua datatable, diciamo che verrebbe una cosa del genere ...

void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
DataRowView rowView = (DataRowView)e.Row.DataItem;
if (rowView != null)
{
TextBox myText = (TextBox)e.Row.FindControl("TextBox");
myText.Text = rowView["Valore_Datatable"]
}
}

Naturalmente nel datagrid devi aggiungere la chiamata alla funzione

OnRowDataBound="GridView1_RowDataBound"

Ciaoz
Gvnn

sig Profilo | Junior Member

OK ma supponiamo che voglia inserire "semplicemenete" la seguente stringa (in tutti i textbox) "digita qui" come posso fare ???

Grazie per la disponibilità dimostrata

sig Profilo | Junior Member

credo di aver risolto da solo

GvnnRules Profilo | Senior Member

Bhè invece che fare

myText.Text = rowView["Valore_Datatable"]

fai

myText.Text = "Digitare quì"

Ciaoz
Gnn

sig Profilo | Junior Member

E' quello che ho fatto ma in realtà invece di passare una strinag "digita qui" ho creato un array di stringhe e le ho passate (incrementando l'indice) credendo che così mi inserisse ad ogni riga la stringa corrispondente: prima riga myArray[0], seconda riga myArray[1],.....

in realtà assegna a tutte l'ultima stringa

void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
string [] myArray = new string [] {"pippo", "pluto", "paperino"};
DataRowView rowView = (DataRowView)e.Row.DataItem;
if (rowView != null)
{
TextBox myText = (TextBox)e.Row.FindControl("TextBox");
for (int i = 0; i < myArray.Length; i++)
{
myText.Text = myArray[i];
}
}
}

In debug devo che ad ogni iterazione aasegna a myText.Text il valore corretto quindi ogni volta lo sovrascrive ed alla fine restituisce solo l'ultimo, coem posso fare ???

GRAZIE anticipatamente

sig Profilo | Junior Member

E' quello che ho fatto ma in realtà invece di passare una strinag "digita qui" ho creato un array di stringhe e le ho passate (incrementando l'indice) credendo che così mi inserisse ad ogni riga la stringa corrispondente: prima riga myArray[0], seconda riga myArray[1],.....

in realtà assegna a tutte l'ultima stringa

void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
string [] myArray = new string [] {"pippo", "pluto", "paperino"};
DataRowView rowView = (DataRowView)e.Row.DataItem;
if (rowView != null)
{
TextBox myText = (TextBox)e.Row.FindControl("TextBox");
for (int i = 0; i < myArray.Length; i++)
{
myText.Text = myArray[i];
}
}
}

In debug devo che ad ogni iterazione aasegna a myText.Text il valore corretto quindi ogni volta lo sovrascrive ed alla fine restituisce solo l'ultimo, come posso fare ???

GRAZIE anticipatamente

sig Profilo | Junior Member

RISOLTO

ora legge direttamente da DB

sig Profilo | Junior Member

RISOLTO

ora legge direttamente da DB

Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5