2 messaggi dal 17 novembre 2003
Come primo post su questo forum vorrei innazitutto saltuare tutti e ringraziarvi per gli aiuti che ho in precedenza tratto dalla lettura dei vostri post.
Vorrei poi proporre un quesito: ho costruito un Web User Control che contiene una DataGrid. Questa DG è composta da due Template columns che contengono come EditItemTemplate delle DropDownList. Riesco a popolare tranquillamente le DDL tramite query su DB, ma non riesco gestirne gli eventi. Dove posso aggiungere un Handler per esempio per l'evento SelectedIndexChanged della DDL

Diego Covini
2 messaggi dal 17 novembre 2003
Mi sorgono alcuni dubbi:
Non sono stato abbastanza chiaro?
E' una domanda troppo banale?
E' già stato trattato l'argomento e io non ho letto il post?
Nessuno sa risolvere il problema?
Non esiste una soluzione?

Diego Covini
58 messaggi dal 24 febbraio 2004
hai poi risolto questo problema??
è un ostacolo che sto affrontando anche io.magari mi dai una dritta. ciao!.
allora, il meccanismo con cui gli eventi lato client vengono "trasofrmati" in eventi lato server si basa sul nome, quando un controllo è all'interno di un datagrid gli viene assegnato un nome in automatico e progressivo.

un meccanismo che potresti usare è quallo si registrarti per l'evento nel ItemCreated del datagrid e non nel pagaLoad


appena trovo un minuto ti faccio un esempio

ciao marco

Chi parla senza modestia troverà difficile rendere buone le proprie parole.
Confucio

http://nostromo.spaces.live.com/default.aspx
ecco tutto il codice:

namespace TestItems
{
  /// <summary>
  /// Descrizione di riepilogo per WebForm1.
  /// </summary>
  public class WebForm1 : System.Web.UI.Page
  {
    protected System.Web.UI.WebControls.DataGrid test;
    protected System.Web.UI.WebControls.Label label;
    private DataSet myDs;
  
    private void Page_Load(object sender, System.EventArgs e)
    {
       myDs = new DataSet();
      DataTable myDt = new DataTable();
      myDt.Columns.Add("lingua", System.Type.GetType("System.String"));
      myDt.Columns.Add("languageID", System.Type.GetType("System.Int32"));
      myDt.Rows.Add(myDt.NewRow());
      myDt.Rows.Add(myDt.NewRow());
      myDt.Rows.Add(myDt.NewRow());
      myDt.Rows.Add(myDt.NewRow());
      myDt.Rows[0][0] = "italiano";
      myDt.Rows[0][1] = 1;
      myDt.Rows[1][0] = "inglese";
      myDt.Rows[1][1] = 2;
      myDt.Rows[2][0] = "spagnolo";
      myDt.Rows[2][1] = 3;
      myDt.Rows[3][0] = "tedesco";
      myDt.Rows[3][1] = 4;
      myDs.Tables.Add(myDt);


      if(  !Page.IsPostBack ) 
      {
      test.DataSource  = myDs;
      test.DataBind();
      }

    }
    private void test_ItemDataBound (object sender, DataGridItemEventArgs e)
    {
      
        if (e.Item.ItemType == ListItemType.Item | e.Item.ItemType == ListItemType.AlternatingItem)
        {
          DropDownList _drop = (DropDownList)e.Item.FindControl("drop");
          _drop.DataSource = myDs;
          _drop.DataTextField = "lingua";
          _drop.DataValueField = "languageID";
          _drop.DataBind();
        }
      
    }
    private void test_ItemCreated (object sender, DataGridItemEventArgs e)
    {
      if (e.Item.ItemType == ListItemType.Item | e.Item.ItemType == ListItemType.AlternatingItem)
      {
        DropDownList _drop = (DropDownList)e.Item.FindControl("drop");
        _drop.SelectedIndexChanged += new EventHandler(_drop_SelectedIndexChanged);
      }

    }
    private void _drop_SelectedIndexChanged(object sender, EventArgs e)
    {
      label.Text = ((DropDownList)sender).ClientID;
    }

    #region Codice generato da Progettazione Web Form
    override protected void OnInit(EventArgs e)
    {
      InitializeComponent();
      base.OnInit(e);
    }
    
    private void InitializeComponent()
    {    
      this.Load += new System.EventHandler(this.Page_Load);
      this.test.ItemDataBound += new DataGridItemEventHandler(test_ItemDataBound);
      this.test.ItemCreated += new DataGridItemEventHandler(test_ItemCreated);

    }
    #endregion
  }
}



nella pagina

<form id="Form1" method="post" runat="server">
      <asp:DataGrid ID="test" Runat="server" AutoGenerateColumns="False">
        <Columns>
          <asp:TemplateColumn>
            <ItemTemplate>
              <asp:DropDownList Runat="server" ID="drop" AutoPostBack="True"></asp:DropDownList>
            </ItemTemplate>
          </asp:TemplateColumn>
        </Columns>
      </asp:DataGrid>
       <asp:Label Runat="server" id="label"></asp:Label>
    </form>


mi scuso per la lunghezza eccessiva

ciao marco

Chi parla senza modestia troverà difficile rendere buone le proprie parole.
Confucio

http://nostromo.spaces.live.com/default.aspx

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.