18 messaggi dal 02 gennaio 2002
Ho costruito una gridview di nove colonne, nella prima colonna ho inserito un textbox che contiene un identificatore, nella seconda un textbox che contiene una descrizione, nelle colonne successive ho inseruito due dropDownList.
Vorrei fare in modo che ogni variazione dei valori dei dropdownlist fosse registrata immediatamente.
Nei dropDownList ho specificato l'evento onselectedindexchanged="ddlUlId_lun_SelectedIndexChanged" per
eseguire la sub'ddlUlId_lun_SelectedIndexChanged' che mi registra il dato selezionato. Per registrare la variazione, però, ho bisogno anche dell'identificativo che è visualizzato nel textbox della prima colonna.
Come faccio a leggere il contenuto del textbox della prima colonna all'interno della sub 'ddlUlId_lun_SelectedIndexChanged'?


Ecco il codice del form:

<asp:GridView ID="dgOpe" runat="server" AllowPaging="True"
AllowSorting="True" AutoGenerateColumns="False" BackColor="White"
BorderColor="#CC9966" BorderStyle="None" BorderWidth="1px" CellPadding="4" style="text-align: center" PageSize="16" Height="197px" >
<RowStyle BackColor="White" ForeColor="#330099" />
<Columns>

<asp:TemplateField HeaderText="Prg" >
<itemtemplate>
<asp:textbox id="txtFasciaOraria" runat="server" Width="30"> </asp:textbox>
</itemtemplate>
<ControlStyle BorderStyle="Double" />
</asp:TemplateField>

<asp:TemplateField HeaderText="UD">
<itemtemplate>
<asp:textbox id="txtDesc" runat="server" Width="80"></asp:textbox>
</itemtemplate>
<ControlStyle BorderStyle="Double" />
</asp:TemplateField>

<asp:TemplateField HeaderText="Lunedì">
<itemtemplate>
<asp:dropdownlist id="ddlUlId_lun" runat="server" Columns="20" Width="150" AutoPostBack="true" onselectedindexchanged="ddlUlId_lun_SelectedIndexChanged" > </asp:dropdownlist>
<asp:dropdownlist id="ddlDoId_lun" runat="server" Columns="20" Width="150" AutoPostBack="true"
onselectedindexchanged="ddlUlId_lun_SelectedIndexChanged"></asp:dropdownlist>
</itemtemplate>
</asp:TemplateField>

... e questa è la sub che viene richiamata:

Protected Sub ddlUlId_lun_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs)
If chkInput() Then
Dim Row As GridViewRow = dgOpe.HeaderRow
Dim vData As Date = CDate(Microsoft.VisualBasic.Right(Row.Cells(2).Text, 8))
'
Dim ddl As DropDownList = DirectCast(sender, DropDownList)
Dim vClasse As String = ddl.SelectedValue
End Sub
252 messaggi dal 03 novembre 2003
ciao
io una soluzione l'ho trovata.
Ho ricreato un po il tuo codice e ora ti spiego come ho fatto per leggere il valore della TEXT associata alla DROP che si seleziona.

Farò riferimento alla... RIGA della griglia in cui ho selezionato la drop!

Faccio riferimento a una DROP ma te aggiungi poi codice anche per la seconda!

Prima di tutto gestisci l'evento GRIGLIA:

in questo codice associo un attributo alla drop che indica in quale riga della griglia si trova.
int RowNumber = 0;
    protected void grid_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType.ToString().ToLower() != "header" && e.Row.RowType.ToString().ToLower() != "footer")
        {            
            ((DropDownList)e.Row.FindControl("ddlUlId_lun")).Attributes.Add("n_row", RowNumber.ToString());
            RowNumber++;
        }
    }


quindi tenendo conto che la TEXT che devi leggere è sulla stessa riga (ovviamente ogni riga avrà il suo indice)...

protected void ddlUlId_lun_SelectedIndexChanged(object sender, EventArgs e)
    {        
        int NumRow=Convert.ToInt16(((DropDownList)sender).Attributes["n_row"]);
        string ValoreText1 = ((TextBox)grid.Rows[NumRow].FindControl("txtFasciaOraria")).Text;
 }


e sei a posto!
ValoreText1 avrà il valore che l'utente avrà inserito nella TEXT riferita alla drop selezionata sulla stessa riga.

Penso di non aver lasciato indietro dei pezzi...

Prova!

it's not difficult to write, but is difficult write that you mean
18 messaggi dal 02 gennaio 2002
Grazie mille.
Funziona perfettamente.

ciao

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.