visual template studio plantillas plantilla mvc instalar formularios descargar create crear c# asp.net gridview

c# - template - ¿Cómo encontrar el control en editar plantilla de elemento?



visual studio create template (2)

Tengo una vista de cuadrícula en el formulario y tengo un campo de plantilla, uno de ellos es:

<asp:TemplateField HeaderText="Country" HeaderStyle-HorizontalAlign="Left"> <EditItemTemplate> <asp:DropDownList ID="DdlCountry" runat="server" DataTextField="Country" DataValueField="Sno"> </asp:DropDownList> </EditItemTemplate> </asp:TemplateField>

ahora en el evento RowEditing necesito obtener el valor seleccionado de la lista desplegable del país y luego estableceré ese valor como Ddlcountry.selectedvalue = value; de modo que cuando aparezca la lista desplegable de la plantilla del elemento de edición, mostrará el valor seleccionado, no el índice 0 de la lista desplegable. pero no puedo obtener el valor de la lista desplegable. Ya he intentado esto:

int index = e.NewEditIndex; DropDownList DdlCountry = GridView1.Rows[index].FindControl("DdlCountry") as DropDownList;

necesito ayuda por favor. Gracias.


Necesita enlazar de nuevo GridView para poder acceder al control en EditItemTemplate . Entonces intente esto:

int index = e.NewEditIndex; DataBindGridView(); // this is a method which assigns the DataSource and calls GridView1.DataBind() DropDownList DdlCountry = GridView1.Rows[index].FindControl("DdlCountry") as DropDownList;

Pero en su lugar usaría RowDataBound para esto, de lo contrario RowDataBound duplicando el código:

protected void gridView1_RowDataBound(object sender, GridViewEditEventArgs e) { if (e.Row.RowType == DataControlRowType.DataRow) { if ((e.Row.RowState & DataControlRowState.Edit) > 0) { DropDownList DdlCountry = (DropDownList)e.Row.FindControl("DdlCountry"); // bind DropDown manually DdlCountry.DataSource = GetCountryDataSource(); DdlCountry.DataTextField = "country_name"; DdlCountry.DataValueField = "country_id"; DdlCountry.DataBind(); DataRowView dr = e.Row.DataItem as DataRowView; Ddlcountry.SelectedValue = value; // you can use e.Row.DataItem to get the value } } }