質問

下記のコードを確認してください。ここで、データベースから動的にテーブルを生成できます。しかし、<td>要素の内側にリンクボタンを表示できません。

基本機能は、リンクボタンが追加されたデータベーステーブルの行ごとに新しい<tr>を生成することです。

ASPXコード

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

ブラウザでページをレンダリングしているときに私のリンクボタンが隠されているのかを表示することを理解できません。

役に立ちましたか?

解決 3

I got my answer. Please check the code.

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

他のヒント

OKテストしなかったが、

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

最後の</tr>の開口部はどこですか?。それは私に欠けているようです。

代わりにsb.Append("</asp:LinkButton></div></td>");を試してください

続行した場合は、最後を削除して、代わりに<tr><td>に置いてみてください。念頭に置いてください。RET_STRINGメソッドはAループ内にあり、したがって一度に1行を返します。RET_STRINGメソッドをASP.NETページにコピーし、C#コーディングを削除し、テストし、続行が成功したかどうかを確認できます。goodluck。

更新も

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

cnあなたはすでに次の行にLinkButtonを閉じることに気づいて以来、代わりにOnClientClick=\"openNewWin('" + texturl + "')\" >");を試してください。そのため、/>を削除して、何が起こったのかを確認してください。

申し訳ありません。私があなたのコードをもう一度見たとき、それは奇妙に見えます。私はここでテストする手段を持っていないために別の答えを置かなければなりませんでした。私の前の答えで述べたように、あなたのret_stringメソッドはループ内にあります。したがって、str_buildは各ループインスタンスで行++または1行を保持する必要があります。あなたがこのようにするとき..

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

最初のstr_build;は最初の進行中に1行を保持します。ただし、別のラウンドになると、string str_build = string.Empty;を設定します。私があなたのコードがクリアされていることを理解しているなら、持っています。私はあなたがどのようにしてあなたの行を返すのかわからないが、私はあなたがあなたがあなたがあなたがあなたが登録することを示唆していた

string str_build = string.Empty;
.

そして下のようなあなたのループの前にそれを置く

 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。男を見てみてください....

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top