Cuando intentamos acceder a un valor de un GridView cuando usamos Edit Templates, tenemos que tener en cuenta la forma en que lo hacemos vamos ha ver un ejemplo:
<asp:TemplateField HeaderText="Cantidad">
<ItemTemplate>
<%# Eval("pr_PreciosListaPrecios")%>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="txtCantidad" runat="Server" Text='<%# Bind("pr_PreciosListaPrecios") %>' Width="90px"></asp:TextBox>
<%--Text='<%# Eval("pr_PreciosListaPrecios") %>'--%>
</EditItemTemplate>
<HeaderStyle HorizontalAlign="Left" />
<%-- <ItemStyle Width="25%" />--%></asp:TemplateField>
Si cargamos de esta manera el GridView, habria un Problema ya que no podriamos acceder al valor del ItemTemplate, la razón es sencilla, es porque no estamos especificando explicitamente lo que ASP, va ha convertir en tiempo de ejecucion, por lo tanto no podriamos acceder al valor e esta manera,
GridView.oRows[Index].Cells[3].Text;
La Solucion :
<asp:TemplateField HeaderText="Cantidad">
<ItemTemplate>
<%--<%# Eval("pr_PreciosListaPrecios")%>--%>
<asp:Label ID="lblCantidadLista" runat="server" Text='<%# Bind("pr_PreciosListaPrecios") %> '></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="txtCantidad" runat="Server" Text='<%# Bind("pr_PreciosListaPrecios") %>' Width="90px"></asp:TextBox>
<%--Text='<%# Eval("pr_PreciosListaPrecios") %>'--%>
</EditItemTemplate>
<HeaderStyle HorizontalAlign="Left" />
<%-- <ItemStyle Width="25%" />--%></asp:TemplateField>
Cambiamos la forma de cargar los datos indicando a la Propiedad , haciendole un "Bind" a un label , que en tiempo de ejecucion asp lo reconoce explicitamente como un "span", cosa que podriamos acceder al vaor sin ningun problema de la iguiente manera:
foreach (GridViewRow oRows in gridDetalle2.Rows) {
Label lblCantidadLista = oRows.Cells[3].FindControl("lblCantidadLista") as Label;
}
y obtenemos el valor sin ningun problemas,
Saludos,
Hola.
ResponderEliminarCómo seria para acceder al valor con vb.net?
Saludos
EliminarPara esos casos te recomiendo que manejes objetos y List Object2
El ListObject2 cargaria tu grid
algo asi
List Object2 oListaVariable =new List Object2 ()
grid.datasource = oListaVariable
grid.databind()
ahora en tienes que desencadenar un evento de la primera grilla algo asi
protected void QuitarItem_Command(object sender, System.Web.UI.WebControls.CommandEventArgs e)
{
int item = Convert.ToInt32(e.CommandArgument);
/*Aqui invocas a tu otro grilla*/
}
Este comentario ha sido eliminado por el autor.
ResponderEliminarEste comentario ha sido eliminado por el autor.
ResponderEliminarEste comentario ha sido eliminado por el autor.
ResponderEliminarHola, seria lo mismo , solo varia en el lado del servidor seria algo asi
ResponderEliminarGridView.oRows(Index).Cells(3).Text
For Each oRows As GridViewRow In gridDetalle2.Rows
Dim lblCantidadLista As Label = TryCast(oRows.Cells(3).FindControl("lblCantidadLista"), Label)
Next
HOLA, COMO SERIA PARA PASAR DE UN GRID A OTRO SIENDO QUE EL SEGUNDO ESTA EN FORMA DE EDICION? AYUDA POR FAVOR!
ResponderEliminar