Pregunta

Verifique el siguiente código, donde puedo generar la tabla dinámicamente desde la base de datos.Pero no puedo mostrar el botón de enlace dentro del <td> elemento.

La función básica es generar un nuevo <tr> para cada fila de la tabla de la base de datos con un botón de enlace agregado.

Código Aspx

<div style="width: 80%;" id="div_post" runat="server">
</div>

Código Aspx.cs

protected void GetvicharData()
{
    try
    {
        Data_display dd = new Data_display();
        DataTable dt = dd.disp_vichar();
        string in_html = string.Empty;
        int i = 0;
        in_html = "<table style=\"width: 100%;\">";
        foreach (DataRow dr in dt.Rows)
        {
        string str_build = string.Empty;
        i = i + 1;
        string lbDate = Convert.ToDateTime(dr["Date"]).ToString("dd-MMM-yy");
        string lbTopic = dr["Topic_Name"].ToString();
        string desc = dr["Description"].ToString();
        string imgURL = dr["img_url"].ToString();
        string textUrl = dr["txt_url"].ToString();
        str_build = ret_string(lbDate, lbTopic, desc, imgURL, textUrl, i);
        in_html += str_build;
        }
        in_html += "</table>";
        div_post.InnerHtml = in_html;
    }
    catch (Exception ex)
    {
        throw ex;
    }
}

public string ret_string(string lbldate, string lbltopic, string description, string imgurl, string texturl, int i)
{
    try
    {
        StringBuilder sb = new StringBuilder();

        sb.Append("<tr><td class=\"post_date\" valign=\"top\" align=\"center\">");
        sb.Append("<asp:Label ID=\"lblDate\" runat=\"server\">" + lbldate + "</asp:Label>");
        sb.Append("</td><td class=\"post_topic\" valign=\"top\" >");
        sb.Append(" <asp:Label ID=\"lblTopic" + i + "\" runat=\"server\">" + lbltopic + "</asp:Label>");
        sb.Append("</td></tr><tr>");
        sb.Append("<td class=\"ShowPic\" valign=\"top\" align=\"right\" ><img src=\"" + imgurl + "\" alt=\"\" id=\"img_post\" /></td>");
        sb.Append("<td class=\"ShowPost\" valign=\"top\" style=\"text-align: justify\">");
        sb.Append("<asp:Panel ID=\"pnlDesc" + i + "\" runat=\"server\"><p>" + description + "</p>");
        sb.Append("</asp:Panel>");
        sb.Append("<div><asp:LinkButton ID=\"lnkbtn" + i + "\" runat=\"server\" Text=\"Read more...\" onclick=\"lnkbtn1_Click\" OnClientClick=\"openNewWin('" + texturl + "')\" />");
        sb.Append("</asp:LinkButton></div></td></tr>");
        string sbuild = sb.ToString();
        return sbuild;
    }
    catch (Exception ex)
    {
        throw ex;
    }
}

Como no puedo entender por qué mi botón de enlace se muestra oculto cuando estoy mostrando la página en el navegador.

¿Fue útil?

Solución 3

Tengo mi respuesta.Por favor, compruebe el código.

sb.Append("<a href=\"#\" onclick=\"openNewWin('" + texturl + "')\" >Read More...</a>");

Otros consejos

OK, no lo probé pero,

sb.Append("</asp:LinkButton></div></td></tr>");

¿Dónde está la apertura para el último? </tr> ?.Me parece que falta.

intentar sb.Append("</asp:LinkButton></div></td>"); en cambio

Además, si persiste, prueba a quitar la última y ponerla en un <tr><td> en cambio.Una cosa a tener en cuenta también.Su método ret_string está en un bucle y, por lo tanto, devuelve 1 fila a la vez.Puede copiar su método ret_string a una página asp.net y eliminar las codificaciones de C#, probar y ver si se devuelve una fila exitosa.Buena suerte.

Actualizar también

OnClientClick=\"openNewWin('" + texturl + "')\" />");

¿Puedes intentarlo? OnClientClick=\"openNewWin('" + texturl + "')\" >"); en cambio, ya noté que ya cerraste el botón de enlace en la siguiente línea.Así que intenta eliminar el /> y ver que paso?

lo siento hombre.Ahora, cuando veo tu código de nuevo, se ve extraño.Tuve que poner otra respuesta porque no tengo ningún medio para probar aquí.Como mencioné en mi respuesta anterior, su método Ret_String está en un bucle.Por lo tanto, su STR_BUILD debe mantener la fila ++ o una fila en cada instancia de bucle.Cuando haces así ..

foreach (DataRow dr in dt.Rows)
        {
        string str_build = string.Empty;
        .................
        str_build = ret_string(lbDate, lbTopic, desc, imgURL, textUrl, i);
        in_html += str_build;
        }

Primer str_build; Hold Una fila en la primera marcha.Sin embargo, cuando viene otra ronda, establece string str_build = string.Empty;, esto se borra automáticamente con WHIH CINE CERDE EL STR_BUILD;está sosteniendo si entiendo su código claro.No estoy seguro de cómo devuelve sus filas, pero le sugiero que elimine el

string str_build = string.Empty;

y ponlo antes de su bucle como debajo

 string str_build = string.Empty;
foreach (DataRow dr in dt.Rows)
{

        .................
        str_build = ret_string(lbDate, lbTopic, desc, imgURL, textUrl, i);
        in_html += str_build;
}

Goodluck.intenta ver el hombre ....

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top