Textbox del gridview

mercoledì 25 luglio 2007 - 08.10

nik10 Profilo | Junior Member

Salve a tutti,
Sono da poco approdato sul pianeta vs 2005 passando dal 2003 e devo dire che è molt diverso... Adesso ho provato ad usare il nuovo gridview... tutto molto belllo in quanto gestisce tutto lui. Il problema è il seguente:
Ho un db che ha dei campi di lunghezza fissa quindi avrei bisogno di controllare le text del mio gridview inserendogli un maxlength o qualcosa di simile come posso fare?

vi ringrazio anticipatamente
Nik10

n3mesi Profilo | Newbie

Se utilizzi le templatecolumns per la gridview, all'interno dell'edititem o dell'insertitem che vuoi controllare inserisci un customvalidator:

esempio:

<asp:TemplateField HeaderText="MioTesto">
<ItemTemplate>...mioitemtemplate...</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="miaTextBox" runat="server"
Text='<%# Eval("MioControllo") %>'></asp:TextBox>
<asp:CustomValidator ID="cvCodiceFornitore1" runat="server" ControlToValidate="miaTextBox" ForeColor="red" Text="Il codice essere lungo al massimo 10 caratteri!" OnServerValidate="controllaCodice"></asp:CustomValidator>
</EditItemTemplate>
</asp:TemplateField>

poi sul cs relativo ti crei il metodo controllaCodice in questo modo:

protected void controllaCodice(object source, ServerValidateEventArgs args)
{
int i = args.Value.Length;
if (i <= 10)
args.IsValid = true;
else
args.IsValid = false;
}


nik10 Profilo | Junior Member

ok grazie... però adesso non funziona più l'update come devo fare? devo passare tutti i miei parametri?
Nik10

n3mesi Profilo | Newbie

tutti i parametri della query di update...
Cosa utilizzi, un sqldatasource, un objectdatasource o un dataset?
Se utilizzi un sqlDataSource basta che sulla pagina aspx, tra <sqldatasource></sqlDataSource> inserisci gli
<updateParameters>
<asp:parameter name="ID" Type="Int32" />
... ...
<asp:parameter name="mioParametro" Type="String" />
</updateParameters>

nel cs, invece, sull'evento rowupdating della gridview ti setti i valori dei parametri.
(supponiamo che un editItem sia una label con id = tuoControllo1, e che un altro edititem sia un textbox con id "tuoControllo2")

protected void gridview1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
int indice = gridview1.EditIndex;
GridViewRow riga = gridview1.Rows[indice];
Label label1 = (Label)riga.FindControl("tuoControllo1");
...
...
TextBox txb1= (TextBox)riga.FindControl("tuoControllo2");
e.NewValues["ID"] = label1.Text;
...
e.NewValues["mioParametro"] = txb1.Text;
}

ora sull'sqlDataSource devi settare updateCommand...
sqldatasource1.UpdateCommand = "update tuaTabella set parametro1=@parametro1, ... , ..., mioParametro = @mioParametro whereID = @ID;

i parametri con le chiocchiole devono chiamarsi come la proprietà name degli updateParameters e come il valore tra le "" dell' e.NewValues[""];

nik10 Profilo | Junior Member

grazie
Nik10
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-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5