Question

Veuillez vérifier le code ci-dessous, où je peux générer la table dynamiquement à partir de la base de données.Mais impossible d'afficher le bouton de lien à l'intérieur du <td> élément.

La fonction de base est de générer un nouveau <tr> pour chaque ligne de la table de base de données avec un bouton de lien ajouté.

Code Aspx

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

Code 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;
    }
}

Comme je n'arrive pas à comprendre pourquoi mon bouton de lien est masqué lorsque j'affiche la page dans le navigateur.

Était-ce utile?

La solution 3

J'ai eu ma réponse.Veuillez vérifier le code.

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

Autres conseils

OK, je n'ai pas testé mais,

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

Où est l'ouverture pour le dernier </tr> ?.Il me semble qu'il manque.

essayer sb.Append("</asp:LinkButton></div></td>"); plutôt

Aussi, si cela persiste, essayez de supprimer le dernier et de le mettre dans un <tr><td> plutôt.Une chose à garder à l'esprit également.Votre méthode ret_string est dans une boucle et renvoie donc 1 ligne à la fois.Vous pouvez copier votre méthode ret_string sur une page asp.net et supprimer les codages C#, tester et voir si une ligne réussie est renvoyée.Bonne chance.

Mettre à jour également

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

Cn tu essaies OnClientClick=\"openNewWin('" + texturl + "')\" >"); au lieu de cela, puisque j'ai remarqué que vous fermez déjà le bouton de lien dans la ligne suivante.Essayez donc de supprimer le /> et tu vois ce qui s'est passé ?

Désolé mec.Tout à l'heure, quand je revois votre code, cela semble étrange.J'ai dû mettre une autre réponse car je n'ai aucun moyen de tester ici.Comme je l'ai mentionné dans ma réponse précédente, votre méthode ret_string est en boucle.Par conséquent, votre str_build doit contenir la ligne ++ ou une ligne à chaque instance de boucle.Quand tu fais comme ça..

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;
        }

D'abord str_build; tenez une rangée dans le premier passage.Cependant, quand vient un autre tour, vous définissez string str_build = string.Empty; , cela est automatiquement effacé quelle que soit la ligne du str_build;tient si je comprends clairement votre code.Je ne sais pas comment vous récupérez vos lignes, mais je vous avais suggéré de supprimer le

string str_build = string.Empty;

et mettez-le avant votre boucle comme ci-dessous

 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;
}

Bonne chance .essaye de voir mec....

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top