¿Cómo obtengo TextBox en una fila de GridView cuando se hace clic en el botón Editar si los encabezados no están vinculados a datos?
Frecuentes
Visto 3,181 veces
0
Tengo un GridView
y los campos de encabezado del GridView
son los elementos de un ListBox
en mi programa Por lo tanto, la cantidad de columnas generadas es dinámica cada vez que ejecuto. Basado en esto, si hago clic en el botón Editar asociado dentro de mi GridView
, ¿cómo genero un TextBox
para cada celda de esa fila?
El código .cs que he escrito es:
protected void DONE4_Click(object sender, EventArgs e)
{
Panel7.Visible = true;
SqlDataAdapter mydat = new SqlDataAdapter("SELECT DISTINCT Profile_Instance FROM Profile_Master", con);
DataSet dst = new DataSet();
mydat.Fill(dst, "Table");
ListBox3.Items.Clear();
ListBox3.DataSource = dst.Tables[0];
ListBox3.DataTextField = dst.Tables[0].Columns["Profile_Instance"].ColumnName;
ListBox3.DataBind();
int count = ListBox3.Items.Count;
DataTable dt = new DataTable();
DataRow rw = default(DataRow);
for (int i = 0; i < ListBox1.Items.Count; i++)
{
dt.Columns.Add(ListBox1.Items[i].ToString(),
System.Type.GetType("System.String"));
}
for (int j = 0; j < count; j++)
{
rw = dt.NewRow();
for (int i = 0; i < ListBox1.Items.Count; i++)
{
rw[ListBox1.Items[i].ToString()] = " ";
}
dt.Rows.Add(rw);
}
GridView2.DataSource = dt;
GridView2.DataBind();
foreach (GridViewRow grdRow in GridView2.Rows)
{
DropDownList bind_dropdownlist = new DropDownList(); // defining the property of the DropDownList as bind_dropdownlist
bind_dropdownlist = (DropDownList)(GridView2.Rows[grdRow.RowIndex].Cells[0].FindControl("Pro_List")); // finding the DropDownList from the gridiew for binding
SqlDataAdapter mydata = new SqlDataAdapter("SELECT DISTINCT Profile_Instance FROM Profile_Master", con);
DataSet dset = new DataSet(); // binding the DropDownList with the dataset ds
mydata.Fill(dset, "Table");
bind_dropdownlist.DataSource = dset;
bind_dropdownlist.DataTextField = "Profile_Instance"; // set the DropDownList's DataTextField as designation which display the designation in the dropdownlist after fetching the data from database
bind_dropdownlist.DataBind();
bind_dropdownlist.Items.Insert(0, new ListItem("---Choose Profile---", "-1"));
}
}
El código de diseño de la GridView
es:
<asp:Panel ID="Panel7" runat="server">
<asp:GridView ID="GridView2" runat="server" CellPadding="4"
style="text-align: center; font-size: small" BackColor="White"
BorderColor="#CC9966" BorderStyle="None" BorderWidth="1px">
<Columns>
<asp:TemplateField HeaderText="">
<ItemTemplate>
<asp:DropDownList ID="Pro_List" runat="server">
<asp:ListItem>--Select--</asp:ListItem>
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateField>
<asp:CommandField ShowEditButton="True" />
</Columns>
</asp:GridView>
</asp:Panel>
¿Alguien puede ayudarme con esto? Espero que la pregunta sea clara.
1 Respuestas
1
Si no es vinculante GridView
y aún desea acceder a los controles dentro de él, puede usar el GridViewRow
propiedad.
protected void grd_RowEditing(object sender, GridViewEditEventArgs e)
{
GridViewRow selectRow = grd.Rows[e.NewEditIndex];
TextBox txtKj=(TextBox)selectRow.Cells[3].FindControl("txtKjId");
}
Respondido el 18 de enero de 17 a las 08:01
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas c# asp.net or haz tu propia pregunta.
Esto me está dando un error: el miembro no invocable 'System.Web.UI.WebControls.GridView.Rows' no se puede usar como un método. - Archana BR