Telerik Radgrid Come recuperare i valori della casella di testo da colonne radgrid generate dinamicamente?

StackOverflow https://stackoverflow.com//questions/9625669

Domanda

Sto creando dinamicamente un radgrid e aggiungendo GridTemplateColumns.Quelle colonne hanno una casella di testo in loro.
Dopo aver vinto databili per la griglia, dopo che l'utente apporta modifiche alle caselle di testo e facendo clic sul pulsante Salva, vorrei accedere ai valori della casella di testo.Ma sono bloccato a ricevere l'istanza di TextBox.Non riuscivo nemmeno a prendere i griditems!
Per aggiungere più complessità, il mio radgrid è in un usercontrol, che è in una vista (multi).
Ecco il codice.

    protected void Page_Init(object sender, EventArgs e)
    {
        DefineGridStructure();            
    }
    protected void Page_Load(object sender, EventArgs e)
    {
        if (RadGrid1 != null && RadGrid1.Items.Count > 0)
        {
            string strtxt = ((TextBox)RadGrid1.Items[1]["ProductGroup1"].Controls[0]).Text;//For starters, load one control and check it's state
        }
    }
    private void DefineGridStructure()
    {
        RadGrid1 = new RadGrid();
        RadGrid1.AutoGenerateColumns = false;
        RadGrid1.ShowHeader = true;
        RadGrid1.NeedDataSource += RadGrid1_NeedDataSource;
        foreach(GridColumn qtyColumn in BuildGridQtyColumns(PaxColumnCount))
        {
            RadGrid1.MasterTableView.Columns.Add(qtyColumn);
        }
        //Add grid to page
        phRadGrid.Controls.Add(RadGrid1);
    }
    private List<GridColumn> BuildGridQtyColumns(int count)
    {
        List<GridColumn> qtyColumns = new List<GridColumn>();
        for (int i = 1; i <= count; i++)
        {
            string qtyColumnName = string.Format("ProductGroup{0}", i);
            GridTemplateColumn qtyColumn = new GridTemplateColumn();
            qtyColumn.ItemTemplate = new GridNumberTemplate(qtyColumnName);//Creates a textbox control
            qtyColumn.UniqueName = qtyColumnName;
            qtyColumn.HeaderText = "Qty";
            qtyColumn.HeaderStyle.Width = Unit.Pixel(60);
            qtyColumn.HeaderStyle.HorizontalAlign = HorizontalAlign.Center;

            qtyColumns.Add(qtyColumn);
        }
        return qtyColumns;
    }
.

Dal momento che il mio controllo è in vista, la pagina_init viene chiamata più di una volta per ogni azione che coinvolge questa vista.

È stato utile?

Soluzione

Per un radgrid generato dinamicamente, dovrebbe essere creato nel metodo Page_Int e ViewState per questa griglia verrà ripristinato automaticamente per noi che possiamo ottenere il metodo nel metodo Page_Load.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top