DropDownList The Name '' does not exist in the current context

0

I have a gridview that lists the countries and depending on the selected list the cities of that country.

<asp:GridView ID="gvRentalVendor" runat="server" AutoGenerateColumns="false" DataKeyNames="RetalAgency_Id" Width="824px" OnRowDataBound="OnRowDataBound" OnRowEditing="OnRowEditing" OnRowCancelingEdit="OnRowCancelingEdit"
                OnRowUpdating="OnRowUpdating" OnRowDeleting="OnRowDeleting" EmptyDataText="No records has been added.">
                <Columns> <asp:TemplateField HeaderText="País" ItemStyle-Width="100">
                        <ItemTemplate>
                            <asp:Label ID="lblCountry" runat="server" Text='<%# Eval("Country_Id") %>'></asp:Label>
                        </ItemTemplate>
                        <EditItemTemplate>
                            <asp:DropDownList runat="server" ID="ddlCountry1" Height="39px" Width="190px" AutoPostBack="true"
                            OnSelectedIndexChanged="ListarCidade1" OnTextChanged="ListarCidade1" OnDataBound="ListarCidade1">
                            </asp:DropDownList>
                        </EditItemTemplate>
                    </asp:TemplateField>
                    <asp:TemplateField HeaderText="Cidade" ItemStyle-Width="100">
                        <ItemTemplate>
                            <asp:Label ID="lblCity" runat="server" Text='<%# Eval("city") %>' ></asp:Label>
                        </ItemTemplate>
                        <EditItemTemplate>
                            <asp:DropDownList runat="server" ID="ddlCity1" Height="39px" Width="190px" AutoPostBack="true">
                            </asp:DropDownList>
                        </EditItemTemplate>
                    </asp:TemplateField>

But I'm not able to do that, because when I use the OnRowDataBound event, it already takes the default value, not action with any other changes that the user makes in the dropdownlist, that is, the SelectedValue is always the same. >

protected void OnRowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow && gvRentalVendor.EditIndex == e.Row.RowIndex)
        {
            DropDownList listVendor = (DropDownList)e.Row.FindControl("ddlVendor1");
            DropDownList listCountry = (DropDownList)e.Row.FindControl("ddlCountry1");
            DropDownList listCity = (DropDownList)e.Row.FindControl("ddlCity1");

            wsCarSuite csuite = new wsCarSuite();
            char[] language = Session["idioma"].ToString().ToCharArray();

            // Listar vendor
            DataSet dsVendor = LoadVendor(Convert.ToInt32(ddlContratos.SelectedValue));
            listVendor.DataSource = dsVendor.Tables[0];
            listVendor.DataValueField = "Vendor_Id";
            listVendor.DataTextField = "Name";
            listVendor.DataBind();

            // Listar Países
            DataSet dsCountry = ListCountryByLanguageAndVendor(Convert.ToInt32(listVendor.SelectedValue));
            listCountry.DataSource = dsCountry.Tables[0];
            listCountry.DataValueField = "CountryID";
            listCountry.DataTextField = "Nome";
            listCountry.DataBind();

            DataSet dsCity = listCityByCountry(listCountry.SelectedValue);
            listCity.DataSource = dsCity.Tables[0];
            listCity.DataValueField = "CityId";
            listCity.DataTextField = "city";
            listCity.DataBind();

            csuite.Dispose();
        }
    }

I tried to create some events to update cities, such as: OnSelectedIndexChanged="ListarCidade1" OnTextChanged="ListarCidade1" OnDataBound="ListarCidade1"

Using this code here:

protected void ListarCidade1()
    {
        ddlCity.DataSource = listCityByCountry(ddlCountry1.SelectedValue);
        ddlCity.DataValueField = "CityId";
        ddlCity.DataTextField = "city";
        ddlCity.DataBind();
    }

However, I'm getting this error in ddlCountry1. The Name 'ddlCountry1' does not exist in the current context.

    
asked by anonymous 11.07.2017 / 06:22

1 answer

0

By doing tests using similar code, I was first unable to get and load the DropDownList inside the ' EditItemTemplate '. So I used it with the DropDownList inside the ' ItemTemplate '.

Using the Country Event ' OnSelectedIndexChanged ' with ' AutoPostBack="true" ', I also added an attribute to identify which index of the < = '

11.07.2017 / 15:55