无法在 <td> 元素中看到我的 linkbutton 控件
-
21-12-2019 - |
题
请检查下面的代码,我可以在其中从数据库动态生成表。但无法显示里面的链接按钮 <td>
元素。
基本功能是生成一个新的 <tr>
为数据库表中的每一行添加一个链接按钮。
ASPX代码
<div style="width: 80%;" id="div_post" runat="server">
</div>
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;
}
}
因为我无法弄清楚为什么当我在浏览器中渲染页面时我的链接按钮显示为隐藏。
解决方案 3
我得到了答案。请检查代码。
sb.Append("<a href=\"#\" onclick=\"openNewWin('" + texturl + "')\" >Read More...</a>");
其他提示
好的,没有测试,但是,
sb.Append("</asp:LinkButton></div></td></tr>");
最后的开口在哪里 </tr>
?。在我看来它失踪了。
尝试 sb.Append("</asp:LinkButton></div></td>");
反而
另外,如果它仍然存在,请尝试删除最后一个并将其放入 <tr><td>
反而。还要记住一件事。您的 ret_string 方法处于循环中,因此一次返回 1 行。您可以将 ret_string 方法复制到 asp.net 页面并删除 C# 编码,测试并查看是否成功返回行。祝你好运。
还更新
OnClientClick=\"openNewWin('" + texturl + "')\" />");
你试试 OnClientClick=\"openNewWin('" + texturl + "')\" >");
相反,因为我注意到您已经关闭了下一行中的链接按钮。所以尝试删除 />
看看发生了什么?
对不起。刚才当我再次看到你的代码时,它看起来很奇怪。我不得不提出另一个答案,因为我在这里没有任何测试手段。就像我在之前的回答中提到的那样,您的 ret_string 方法处于循环中。因此,您的 str_build 应在每个循环实例中保存行 ++ 或一行。当你这样做的时候..
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;
首先保持一排。然而,当另一轮到来时,你设置 string str_build = string.Empty;
,这会自动清除 str_build 的哪一行;如果我清楚地理解你的代码,则保持不变。我不确定你如何获得返回的行,但我建议你取出
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;
}
祝你好运 。尝试看看男人......