1

Tengo un Gridview el cual tiene 10 columnas de las cuales 5 deben tener Gridview para poder actualizar ciertos datos, como este ejemplo, solo en el este solo tienen un dropdownlist y yo necesito 5 en el mismo gridview. En mi código solo llena el primer gridview y para pasar al segundo muestra el error: "Referencia a objeto no establecida como instancia de un objeto."

Y no los llena.

Aqui dejo una imagen de la salida final, como se ve, solo llena un dropdownlist

introducir la descripción de la imagen aquí

 

    <asp:GridView ID="GridView3" runat="server" DataKeyNames="Id" ShowHeaderFilterButton="true" OnRowDataBound="GridView3_RowDataBound"                         OnRowEditing="GridView3_RowEditing" OnRowCancelingEdit="GridView3_RowCancelingEdit" OnRowUpdating="GridView3_RowUpdating">
     
    <Columns>

    <asp:BoundField Visible="false" DataField="Id" HeaderText="Id" SortExpression="Id" ItemStyle-HorizontalAlign="Center"></asp:BoundField>
    <asp:BoundField DataField="Codigo" HeaderText="Codigo" SortExpression="Codigo" ReadOnly="True"></asp:BoundField>

   <asp:TemplateField HeaderText="Pagare_Temp" SortExpression="Pagare_Temp">
   <EditItemTemplate>
   <asp:DropDownList ID="DropDownList1" runat="server"></asp:DropDownList>
   </EditItemTemplate>
   <ItemTemplate>
   <asp:Label ID="LPagare_Temp" runat="server" Text='<%# Bind("Pagare_Temp")%>'> 
  </asp:Label>
  </ItemTemplate>
  <ItemStyle HorizontalAlign="Center" />
  </asp:TemplateField>

  <asp:TemplateField HeaderText="Vale_Temp" SortExpression="Vale_Temp">
  <EditItemTemplate>
  <asp:DropDownList ID="DropDownList2" runat="server"></asp:DropDownList>
  </EditItemTemplate>
  <ItemTemplate>
  <asp:Label ID="LVale_Temp" runat="server" Text='<%# Bind("Vale_Temp") %>'> 
 </asp:Label>
  </ItemTemplate>
  <ItemStyle HorizontalAlign="Center" />
  </asp:TemplateField>

    ...etc

    <asp:CommandField ShowEditButton="True" EditText='<i class="far fa-edit"></i>' UpdateText="Guardar" HeaderText="Agregar" ShowHeader="True" CausesValidation="false">
    <ItemStyle HorizontalAlign="Center" Font-Size="small" />
    </asp:CommandField>

    </Columns>
    </asp:GridView>

protected void GridView3_RowDataBound(object sender,   System.Web.UI.WebControls.GridViewRowEventArgs e)
    {
    try
    {
    if (e.Row.RowType == DataControlRowType.DataRow && GridView3.EditIndex == e.Row.RowIndex)
    {
    //Pagare_Temp
    DropDownList dropdown = (DropDownList)e.Row.FindControl("DropDownList1");
    dropdown.Items.Clear();
    dropdown.Items.Add("");
    dropdown.Items.Add("SI");
    dropdown.Items.Add("NO");
    dropdown.Items.FindByValue((e.Row.FindControl("LPagare_Temp") as Label).Text).Selected = true;

    //Vale_Temp
    DropDownList dropdown1 = (DropDownList)e.Row.FindControl("DropDownList2");
    dropdown1.Items.Clear();
    dropdown1.Items.Add("");
    dropdown1.Items.Add("SI");
    dropdown1.Items.Add("NO");
    dropdown1.Items.FindByValue((e.Row.FindControl("LVale_Temp") as Label).Text).Selected = true;
    }
    }
    catch (Exception ex) { ex.ToString(); }
    }
Huntzberger
  • 445
  • 18
  • 45

1 Answers1

0

Intenta inicializar los DropDownList antes de llenarlos, asi:

  if (e.Row.RowType == DataControlRowType.DataRow && GridView3.EditIndex == e.Row.RowIndex)
                {                   
                    DropDownList dropdown2 = new DropDownList();
                    DropDownList dropdown3 = new DropDownList();
                    DropDownList dropdown4 = new DropDownList();
                    DropDownList dropdown5 = new DropDownList();
                    DropDownList dropdown6 = new DropDownList();
                    
                    //Pagare_Temp
                    DropDownList dropdown1 = (DropDownList)e.Row.FindControl("DropDownList1");
                    dropdown1.Items.Clear();
                    dropdown1.Items.Add("");
                    dropdown1.Items.Add("SI");
                    dropdown1.Items.Add("NO");                   
                   
                    //Vale_Temp
                    dropdown2 = (DropDownList)e.Row.FindControl("DropDownList2");
                    dropdown2.Items.Clear();
                    dropdown2.Items.Add("");
                    dropdown2.Items.Add("SI");
                    dropdown2.Items.Add("NO");

                    dropdown3 = (DropDownList)e.Row.FindControl("DropDownList3");
                    dropdown3.Items.Clear();
                    dropdown3.Items.Add("");
                    dropdown3.Items.Add("SI");
                    dropdown3.Items.Add("NO");

                    dropdown4 = (DropDownList)e.Row.FindControl("DropDownList4");
                    dropdown4.Items.Clear();
                    dropdown4.Items.Add("");
                    dropdown4.Items.Add("SI");
                    dropdown4.Items.Add("NO");

                    dropdown5 = (DropDownList)e.Row.FindControl("DropDownList5");
                    dropdown5.Items.Clear();
                    dropdown5.Items.Add("");
                    dropdown5.Items.Add("SI");
                    dropdown5.Items.Add("NO");

                    dropdown6 = (DropDownList)e.Row.FindControl("DropDownList6");
                    dropdown6.Items.Clear();
                    dropdown6.Items.Add("");
                    dropdown6.Items.Add("SI");
                    dropdown6.Items.Add("NO");

                    dropdown1.Items.FindByValue((e.Row.FindControl("Label1") as Label).Text).Selected = true;
                    dropdown2.Items.FindByValue((e.Row.FindControl("Label2") as Label).Text).Selected = true;
                    dropdown3.Items.FindByValue((e.Row.FindControl("Label3") as Label).Text).Selected = true;                
                    dropdown4.Items.FindByValue((e.Row.FindControl("Label4") as Label).Text).Selected = true;
                    dropdown5.Items.FindByValue((e.Row.FindControl("Label5") as Label).Text).Selected = true;
                    dropdown6.Items.FindByValue((e.Row.FindControl("Label6") as Label).Text).Selected = true;
}
sunflower
  • 322
  • 4
  • 20