Frage

Bitte überprüfen Sie den folgenden Code, mit dem ich die Tabelle dynamisch aus der Datenbank generieren kann.Die Link-Schaltfläche kann jedoch nicht im angezeigt werden <td> Element.

Die Grundfunktion besteht darin, ein neues zu generieren <tr> für jede Zeile in der Datenbanktabelle mit hinzugefügter Link-Schaltfläche.

Aspx-Code

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

Aspx.cs-Code

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

Da ich nicht herausfinden kann, warum meine Link-Schaltfläche beim Rendern der Seite im Browser ausgeblendet angezeigt wird.

War es hilfreich?

Lösung 3

Ich habe meine Antwort bekommen.Bitte überprüfen Sie den Code.

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

Andere Tipps

OK, habe es nicht getestet, aber

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

Wo ist die Öffnung für den letzten </tr> ?.Es scheint mir, dass es fehlt.

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

Auch wenn es weiterhin besteht, versuchen Sie, das letzte zu entfernen und es in ein anderes zu stecken <tr><td> stattdessen.Eines sollten Sie auch bedenken.Ihre ret_string-Methode befindet sich in einer Schleife und gibt daher jeweils eine Zeile zurück.Sie können Ihre ret_string-Methode auf eine asp.net-Seite kopieren und die C#-Codierungen entfernen, testen und prüfen, ob eine erfolgreiche Zeile zurückgegeben wird.Viel Glück.

Update auch

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

Versuchen Sie es OnClientClick=\"openNewWin('" + texturl + "')\" >"); Stattdessen habe ich bemerkt, dass Sie den Link-Button in der nächsten Zeile bereits geschlossen haben.Versuchen Sie also, das zu entfernen /> und sehen, was passiert ist?

Tut mir leid, Mann.Als ich gerade deinen Code wieder sehe, sieht er seltsam aus.Ich musste eine andere Antwort geben, da ich hier keine Möglichkeit zum Testen habe.Wie ich in meiner vorherigen Antwort erwähnt habe, befindet sich Ihre ret_string-Methode in einer Schleife.Daher sollte Ihr str_build Zeile ++ oder eine Zeile an jeder Schleifeninstanz enthalten.Wenn dir das gefällt...

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

Erste str_build; Halten Sie im ersten Durchgang eine Reihe.Wenn es jedoch zu einer weiteren Runde kommt, legen Sie fest string str_build = string.Empty; , dies wird automatisch gelöscht, egal in welcher Zeile str_build;hält, wenn ich deinen Code klar verstehe.Ich bin mir nicht sicher, wie Sie Ihre Zeilen von zurückbekommen, aber ich hatte vorgeschlagen, dass Sie die entfernen

string str_build = string.Empty;

und platzieren Sie es wie unten vor Ihrer Schleife

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

Viel Glück .Versuchen Sie, den Mann zu sehen...

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top