Ir al contenido principal

Crear codigo HTML desde nuestro archivo de code behind

Algunas veces es necesario crear una salida en codigo HTML con informacion proveniente de nuestra base de datos. En ASP tradicional se tenia que embeber el codigo de la base de datos entre el codigo HTML (entre <%   %>).
En NET esto es mas facil, en el siguiente ejemplo usaremos la clase StringBuilder() para crear la cadena de HTML y con el control Literal lo desplegaremos en nuestra pagina.
  • Primero, arrastramos un control Panel desde nuestra barra de herramientas y le asignamos las propiedades de ID, CssClass, etc.
  • Luego, arrastramos un control Literal de la barra de herramientas y le asignamos la propiedad ID.
En modo de diseño nuestra pagina quedaria asi:

En nuetro code behind mandamos el strem de HTML de la siguiente manera:
//Instanciamos la clase StringBuilder para manipular nuestra cadena
StringBuilder MisArchivos = new StringBuilder();
//Luego construimos nuestra cadena con el metodo Append de la clase
MisArchivos.Append("<a href='" + ResolveUrl(dt.Rows[i][2].ToString())+ "'><img border='0' href='");
MisArchivos.Append(dt.Rows[i][2].ToString());
MisArchivos.Append("' src='" + ResolveUrl("~/images/" + dt.Rows[i][0].ToString()+ "'>"));
MisArchivos.Append(dt.Rows[i][1].ToString());
MisArchivos.Append("</img></a> ");
//Le asignamos la cadena construida con el StrinBuilder a la propiedad Text del control Literal
literal.Text = MisArchivos.ToString();

En este caso el dt es un objeto DataTable que trae las direcciones Url de archivos que hay que desplegar en la pagina.
Con esto se desplegaran los controles HTML dentro del panel de la siguiente manera:

Comentarios

Entradas más populares de este blog

Eliminar registros repetidos de una DataTable

A continuación les muestro un ejemplo de como eliminar los registros repetidos de una DataTable . //DataTable con los reqistros repetidos (myRepeatedData) //Filtramos los registros únicos en la variable var. var uniqueRows = myRepeatedData.AsEnumerable().Distinct(DataRowComparer.Default); //Lo copiamos a otra DataTable DataTable myUniqueData = uniqueRows.CopyToDataTable(); Con esto tendremos en la DataTable myUniqueData los registros únicos.

Obtener el valor de un control ASPxSpinEdit dentro de un ASPxGridView

Para obtener el valor de un control ASPxSpinEdit dentro de un ASPxGridView -Agregar un control ASPxSpinEdit dentro del DataItem Template -Hacer que se muestren los datos de la fuente poniendo en el atributo value la expressión siguiente: ' <%# Bind("GroupCode") %> '  donde GroupCode es el nombre de la columna en la fuente de datos. -Hacer que el evento ValueChanged se procese en el servidor agregando lo siguiente en los eventos del cliente:   <ClientSideEvents ValueChanged="function(s, e) {  e.processOnServer = true; }" /> El markup completo de la columna quedaría así: <dx:GridViewDataTextColumn Caption="Grupo" FieldName="GroupCode" ShowInCustomizationForm="True" VisibleIndex="4">    <PropertiesTextEdit DisplayFormatInEditMode="True" DisplayFormatString="g">    </PropertiesTextEdit>    <DataItemTemplate>       <dx:ASPxSpinEdit ID="spinEdi...

Mostrar un Loading Panel al cargar y al procesar los datos que consuman mucho tiempo de proceso

Primero hay que crear el Panel como en el siguiente ejemplo: <dx:ASPxLoadingPanel ID="loadingPanel" ClientInstanceName="loadingPanel" runat="server" Modal="true"         Width="70%" Height="30px" Text="Se está procesando su petición; por favor no abandone la sesión porque podría tener inconsistencia en sus datos..." >     </dx:ASPxLoadingPanel> Crear una función con Javascript que muestre el panel :  function showLoadingPanel() {         loadingPanel.Show();     } Si se desea que solo muestre el panel encima de un control como el ASPxGridview se puede usar el método ShowInElementByID del Panel: function showLoadingPanel() {         loadingPanel.ShowInElementByID(grvHarnessItems.name);     } Crear una función con Javascript que esconda el panel:   function OnControlsInitialized(s, e) {         setTimeout(function () {   ...