<asp:LinkButton ID="lnkvVerRecibosPagados" runat="server" CausesValidation="True" Text="Recibos pagados" OnClick="lnkvVerRecibosPagados_Click"></asp:LinkButton>
<asp:LinkButton ID="lnkvVerRecibosPendientes" runat="server" CausesValidation="True" Text="Recibos pendientes" OnClick="lnkvVerRecibosPendientes_Click"></asp:LinkButton>
Ambos linkButton se encuentran dentro del grid que le muestra al usuario las propiedad a las cuales tiene acceso.
Además de añadir los botones también se añadió una segunda función para redireccionar a la pagina que muestra los recibos, la única diferencia entre ambos métodos es el valor que le asignan a la variable de sesión llamada "opcionRecibos", esta se usa como parámetro para el SP que retorna los recibos de la propiedad, y retorna ya sea los recibos pagados o pendientes.
LinkButton btn = (LinkButton)sender;
GridViewRow row = (GridViewRow)btn.NamingContainer;
string numfinca = row.Cells[0].Text;
Session["numFinca"] = numfinca;
Session["opcionRecibos"] = 0;
Response.Redirect("~/WebPages/Normal_user/tablaRecibos.aspx");
La opción 0 es para recibos pendientes, y la 1 para recibos pagados.
int opcionRecibos = (int)Session["opcionRecibos"];
cmd.Parameters.Add("@inOpcionRecibos", SqlDbType.Int).Value = opcionRecibos;
Esta variable luego solo se toma en la pagina de recibos y se agrega como parámetro al SP.
* En el SP que retorna los elementos de la bitácora se añadió la instrucción ORDER BY [insertedAt] ASC para asegurarse que las fechas se muestren en orden en la pagina web
* Se añadió la opción de ver el comprobante de pago de un recibo.
* Tras analizar un poco los requisitos del proyecto se decidió añadir al usuario cliente ver todos los comprobantes de pago de una propiedad, y que al ver estos también pueda ver todos los recibos de un comprobante de pago. Para implementar correctamente esto se utilizaron varias variables de sesión, de esta manera se pueden reutilizar las tablas.
Session["numFinca"] = numfinca;
Session["opcionRecibos"] = 1;
Session["opcionRecibosDeComprobante"] = 0;
La variable "numFinca" se utiliza en cada de que se quiera ver los comprobantes de pago de una propiedad, o para ver sus recibos.
La variable "opcionRecibos" indica si son recibos pagados o pendientes los que se desean ver.
La variable "opcionRecibosDeComprobante" indica si se quieren ver los recibos de un comprobante o los recibos de la propiedad.
* Se tuvo que cambiar la opción de generar las columnas automáticamente en la tabla de comprobantes, esto para ocultar los id de cada uno. Ahora se utilizan boundFields para cada columna, y un template field para agregar el botón de ver recibos.
<asp:BoundField HeaderText="" DataField="id" InsertVisible="False" ReadOnly="True" SortExpression="id" Visible="false"/>
<asp:BoundField HeaderText="Fecha" DataField="fecha" InsertVisible="False" ReadOnly="True" SortExpression="fecha"/>
<asp:BoundField HeaderText="Total" DataField="total" InsertVisible="False" ReadOnly="True" SortExpression="total" />
<asp:TemplateField HeaderText="" ShowHeader="False">
<ItemTemplate>
<asp:LinkButton ID="lnkvVerRecibosDeComprobante" runat="server" CausesValidation="True" Text="Recibos pagados" OnClick="lnkvVerRecibosDeComprobante_Click">
</asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
* Un problema encontrado fue como guardar los id internos de la base en la parte web sin dejar que el usuario los vea. Para esto se uso el atributo DataKeyName del gridView y se le asigno el valor id.
Tiempo trabajado: 3 horas.
Referencias:
https://stackoverflow.com/questions/5376278/how-to-hide-a-column-gridview-but-still-access-its-value
No hay comentarios:
Publicar un comentario