Pagina 3 di 4 primaprima 1 2 3 4 ultimoultimo
Visualizzazione dei risultati da 21 a 30 su 31
  1. #21
    Utente di HTML.it L'avatar di ciupaz
    Registrato dal
    Dec 2000
    residenza
    Milano
    Messaggi
    848
    Ok adesso ci entra, ci voleva infatti il
    OnItemDataBound="DataGrid1_ItemDataBound
    nell
    <asp:datagrid id=DataGrid1......ecc
    della pagina.

    E il metodo è:

    int id_user = (int)DataGrid1.DataKeys[e.Item.ItemIndex];
    if (id_user == -1)
    { e.Item.Cells[1].Controls[0].Visible = false; }
    else
    {
    e.Item.Cells[1].Controls[0].Visible = true;
    }


    Il mio datagrid nella prima colonna ha EDIT (che poi diventa Update e Cancel quando entro in modfica) e poi il DELETE (per quello che ho messo Cells[1]).

    Mi rimane però ancora il DELETE visualizzato, mannaggia.

  2. #22
    posta la template column. Cmq, hai provato con
    codice:
    e.Item.Cells[1].Controls[1 ].Visible ...
    Saluti a tutti
    Riccardo

  3. #23
    Utente di HTML.it L'avatar di ciupaz
    Registrato dal
    Dec 2000
    residenza
    Milano
    Messaggi
    848
    Ora sono riuscito
    Ho modificato il metodo in questo modo:

    public void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
    {
    if(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.EditItem)
    {
    int id_user = (int)DataGrid1.DataKeys[e.Item.ItemIndex];
    LinkButton btn = (LinkButton)e.Item.FindControl("btnDelete");
    if (id_user == -1)
    {
    btn.Visible = false;
    }
    else
    {
    e.Item.Cells[1].Controls[0].Visible = true;
    }
    }
    }

  4. #24
    bene. Forse la parte
    else
    {
    e.Item.Cells[1].Controls[0].Visible = true;
    }
    sembra superflua
    Saluti a tutti
    Riccardo

  5. #25
    Utente di HTML.it L'avatar di ciupaz
    Registrato dal
    Dec 2000
    residenza
    Milano
    Messaggi
    848
    Sì infatti, quella parte è superflua, dato che il DELETE è visibile per default.
    Adesso sto tentando di fargli fare l'inserimento della nuova riga, modificando il metodo di Update.
    Se trovo una soluzione accettabile, la posto.

  6. #26
    Utente di HTML.it L'avatar di ciupaz
    Registrato dal
    Dec 2000
    residenza
    Milano
    Messaggi
    848
    Uff spero di avercela fatta.
    Ho modificato il normale metodo di Update nel seguente modo:

    int id_user = (int)DataGrid1.DataKeys[e.Item.ItemIndex];

    TextBox tb;
    tb = (TextBox)e.Item.Cells[3].Controls[0];
    name = tb.Text;
    tb = (TextBox)e.Item.Cells[4].Controls[0];
    surname = tb.Text;
    tb = (TextBox)e.Item.Cells[5].Controls[0];
    email = tb.Text;
    tb = (TextBox)e.Item.Cells[6].Controls[0];
    userid = tb.Text;
    tb = (TextBox)e.Item.Cells[7].Controls[0];
    note = tb.Text;

    if (id_user == -1)
    InsertNewUser(name, surname, email, userid, note);

    e ho creato il metodo:

    private void InsertNewUser(string name, string surname, string email, string userid, string note)
    {
    SqlConnection conn = new SqlConnection(ConfigurationSettings.AppSettings["ConnectionString"]);
    SqlCommand InsertCommand = new SqlCommand("up_UserInsert",conn);
    InsertCommand.CommandType = CommandType.StoredProcedure;

    InsertCommand.Parameters.Add(new SqlParameter("@name", SqlDbType.VarChar,200));
    InsertCommand.Parameters.Add(new SqlParameter("@surname", SqlDbType.VarChar,200));
    InsertCommand.Parameters.Add(new SqlParameter("@email", SqlDbType.VarChar,200));
    InsertCommand.Parameters.Add(new SqlParameter("@userid", SqlDbType.VarChar,200));
    InsertCommand.Parameters.Add(new SqlParameter("@note", SqlDbType.VarChar,4000));

    InsertCommand.Parameters["@name"].Value = name;
    InsertCommand.Parameters["@surname"].Value = surname;
    InsertCommand.Parameters["@email"].Value = email;
    InsertCommand.Parameters["@userid"].Value = userid;
    InsertCommand.Parameters["@note"].Value = note;

    try {
    conn.Open();
    InsertCommand.ExecuteNonQuery();
    }
    finally
    {conn.Close();}
    }

    e così funziona.
    Non ho per ora controllato nel caso l'utente faccia il cattivo, ovvero inserisca oltre 200 caratteri nei campi.

  7. #27
    Utente di HTML.it L'avatar di ciupaz
    Registrato dal
    Dec 2000
    residenza
    Milano
    Messaggi
    848
    Una curiosità, dato che i campi nella tabella USERS sono settati a varchar(200), come è possibile fare in modo che l'utente non possa inserire più di 200 caratteri nelle textbox del Datagrid quando entra in Edit?

  8. #28
    Originariamente inviato da ciupaz
    e ho creato il metodo:
    private void InsertNewUser
    e ne dovresti creare anche uno molto simile per fare l'update. Quindi perche' non fare un unico metodo simile a
    codice:
    private int executeCommand(string _spName, bool _isUpdate) 
    	{ 		
    		SqlConnection conn = new SqlConnection(ConfigurationSettings.AppSettings["ConnectionString"]); 		
    		try
    		{
    			SqlCommand cmd = conn.CreateCommand();
    			cmd.CommandType = CommandType.StoredProcedure;
    			cmd.CommandText = _spName;
    			if (_isUpdate == true) 
    			{
    				cmd.Parameters.Add(new SqlParameter("@tuocampoid", System.Data.SqlDbType.Int));    
    				cmd.Parameters["@tuocampoid"].Value = tuocampoid;
    			}
    			cmd.Parameters.Add(new SqlParameter("@name", System.Data.SqlDbType.VarChar,200));   
    			cmd.Parameters.Add(new SqlParameter("@surname", System.Data.SqlDbType.VarChar,200)); 
    			cmd.Parameters.Add(new SqlParameter("@email", System.Data.SqlDbType.VarChar,200)); 
    			cmd.Parameters.Add(new SqlParameter("@userid", System.Data.SqlDbType.VarChar,200)); 
    			cmd.Parameters.Add(new SqlParameter("@note", System.Data.SqlDbType.VarChar,4000)); 
    
    			cmd.Parameters["@name"].Value = name; 
    			cmd.Parameters["@surname"].Value = surname; 
    			cmd.Parameters["@email"].Value = email; 
    			cmd.Parameters["@userid"].Value = userid; 
    			cmd.Parameters["@note"].Value = note; 
    			conn.Open();
    			return cmd.ExecuteNonQuery();
    		}
    		finally 
    		{
    			conn.Close();
    		}		
    	}
    non so se funziona cosi come ma potrebbe essere una traccia per ridurre del 50% il codice. p.s. non c'e' bisogno di passare come parametri tutti i valori basterebbe dichiarare fuori dalla funzione updatecommand le variabili e riempirle prima di chiamare executecommand.
    Saluti a tutti
    Riccardo

  9. #29
    Originariamente inviato da ciupaz
    Una curiosità, dato che i campi nella tabella USERS sono settati a varchar(200), come è possibile fare in modo che l'utente non possa inserire più di 200 caratteri nelle textbox del Datagrid quando entra in Edit?
    se rendi le colonne templatecolumn hai il controllo sulle textbox visualizzate e quindi puoi decidere il numero di caratteri cosi come faresti con una textbox normale.
    Saluti a tutti
    Riccardo

  10. #30
    Utente di HTML.it L'avatar di ciupaz
    Registrato dal
    Dec 2000
    residenza
    Milano
    Messaggi
    848
    Forse non trovo la proprietà, ma una volta convertita una colonna in TemplateColumn, ho il seguente HTML:

    <asp:TemplateColumn HeaderText="name">
    <ItemTemplate>
    <asp:Label runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.name") %>'>
    </asp:Label>
    </ItemTemplate>
    .......
    .......

    come faccio ad impostare una lunghezza massima per questo campo?

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 © 2026 vBulletin Solutions, Inc. All rights reserved.