Visualizzazione dei risultati da 1 a 4 su 4

Discussione: Tabelle in ASP.NET

  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2010
    Messaggi
    132

    Tabelle in ASP.NET

    Ciao a tutti,
    ho qualche problema con l'inserimento e la lettura di dati in una tabella contenente textbox e label in un'applicazione ASP.NET
    Ho individuato 2 metodi per farlo ma entrambi creano problemi.


    - Metodo 1
    riesco a recuperare i dati senza problema , ma riesco a scrivere solo sulle celle BoundField, non sulle celle TemplateField


    codice della pagina aspx
    codice HTML:
    <asp:GridView ID="GridView2" HeaderStyle-BackColor="#3AC0F2" HeaderStyle-ForeColor="White"    runat="server" AutoGenerateColumns="false" OnKeyUp="GridView2_KeyUp" OnRowDataBound = "OnRowDataBound" OnSelectedIndexChanged = "OnSelectedIndexChanged"        enableEventValidation="true">    
    <Columns>
    <asp:TemplateField HeaderText="p.min">
    <ItemTemplate>
    <asp:TextBox ID="cell1" runat="server" style="width:70px;"></asp:TextBox>          </ItemTemplate>
    </asp:TemplateField>
    <asp:BoundField DataField="cell2" HeaderText="cell2" ItemStyle-Width="300" />

    codice della pagina cs per scrittura
    codice HTML:
    DataTable dtable = new DataTable();dtable.Columns.AddRange(new DataColumn[14] { 
    new DataColumn("cell1"), new DataColumn("cell2")});
    dtable.Rows.Add("dati1", "dati2");

    codice della pagina cs per lettura
    codice HTML:
    TextBox txt1 = (TextBox)GridView1.Rows[cont].FindControl("cell1");
    valuetest = txt1.Text;

    - Metodo 2
    riesco a scrivere sulle celle BoundFielde TemplateField ma non riesco a recuperare i dati dalla pagina.


    codice della pagina aspx
    codice HTML:
    <asp:Placeholder ID="PlaceHolder1" runat="server" ></asp:Placeholder>

    codice della pagina cs per scrittura
    codice HTML:
    Table tbl = new Table();
    PlaceHolder1.Controls.Clear();
    int tblRows = 3;
    int tblCols = 3;
    PlaceHolder1.Controls.Add(tbl);
    for (int i = 0; i < 3; i++){
    TableRow tr = new TableRow();
    for (int j = 0; j < 3; j++){   
    TableCell tc = new TableCell();   
    TextBox txtBox = new TextBox();   
    txtBox.ID = "tbox"+i+""+j;   
    txtBox.Text = "tbox"+i+""+j;   
    boxLista[j]= txtBox; // i valori non vengono modificati se modifico la tabella  
    tc.Controls.Add(txtBox);   
    tr.Cells.Add(tc);}   
    tbl.Rows.Add(tr);
    }

    codice della pagina cs per lettura
    Eccezione generata: 'System.NullReferenceException'
    codice HTML:
    TextBox txt1 = (TextBox)PlaceHolder1.FindControl("tbox01");


    Grazie.

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,303
    Sposto nel forum dedicato ad ASP.NET.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Non uso il GridView ma il ListView, e ti posso assicurare che è molto più gestibile.
    Io ti consiglio di provarlo
    Pietro

  4. #4
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,886
    guarda il codice lato client generato, vedrai sicuramente che l'ID della textbox non e' quello.

    se aggiungi l'attributo (alla textbox) ClientIDMode="static" forse il framework non lo modifica

    comunque nel metodo 1 stai facendo una cosa innaturale, le gridview non sono fatte per scrivere dati in quel modo: devi passare per una fonte dati, un SqlDataSource per esempio

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.