C# 无法在a中看到我的linkbutton控件<;td>;要素

C# 无法在a中看到我的linkbutton控件<;td>;要素,c#,visual-studio-2010,html-table,asplinkbutton,C#,Visual Studio 2010,Html Table,Asplinkbutton,请检查下面的代码,我可以从数据库中动态生成表。但无法在元素内显示链接按钮 基本功能是为数据库表中的每一行生成一个新的,并添加一个链接按钮 Aspx代码 <div style="width: 80%;" id="div_post" runat="server"> </div> Aspx.cs代码 protected void GetvicharData() { try { Data_display dd = new Data_displ

请检查下面的代码,我可以从数据库中动态生成表。但无法在
元素内显示链接按钮

基本功能是为数据库表中的每一行生成一个新的
,并添加一个链接按钮

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;
    }
}
受保护的void GetvicharData()
{
尝试
{
数据显示dd=新数据显示();
数据表dt=dd.disp_vichar();
字符串in_html=string.Empty;
int i=0;
in_html=“”;
foreach(数据行dr在dt.行中)
{
string str_build=string.Empty;
i=i+1;
字符串lbDate=Convert.ToDateTime(dr[“Date”]).ToString(“dd-MMM-yy”);
字符串lbTopic=dr[“Topic_Name”]。ToString();
字符串desc=dr[“Description”].ToString();
字符串imgURL=dr[“img_url”].ToString();
字符串texturel=dr[“txt_url”].ToString();
str_build=ret_字符串(lbDate、lbTopic、desc、imgURL、textUrl、i);
in_html+=str_build;
}
在_html+=“”;
div_post.InnerHtml=in_html;
}
捕获(例外情况除外)
{
掷骰子;
}
}
公共字符串返回字符串(字符串lbldate、字符串lbltopic、字符串描述、字符串imgurl、字符串纹理、int i)
{
尝试
{
StringBuilder sb=新的StringBuilder();
某人加上(“”);
某人加上(“+lbldate+”);
某人加上(“”);
sb.追加(“+lbltopic+”);
某人加上(“”);
某人加上(“”);
某人加上(“”);
sb.追加(“”+说明+“

”); 某人加上(“”); 某人加上(“”); 某人加上(“”); 字符串sbuild=sb.ToString(); 返回sbuild; } 捕获(例外情况除外) { 掷骰子; } }
当我在浏览器中呈现页面时,我无法理解为什么我的链接按钮显示为隐藏。

确定没有测试,但是

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

您可以尝试
OnClientClick=\“openNewWin(““+texturl+”)\”>");相反,因为我注意到你已经关闭了下一行的链接按钮。因此,请尝试删除
/>
,看看发生了什么

对不起,伙计。刚才当我再次看到你的代码时,它看起来很奇怪。我不得不提出另一个答案,因为我这里没有任何测试手段。正如我在前面的回答中提到的,您的ret_string方法处于循环中。因此,str_构建应该在每个循环实例中保存行++或一行。当你喜欢这个的时候

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;
        }
首先
stru构建在第一行中保留一行。但是,当它进入下一轮时,您将
string str\u 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;
}

祝你好运。试试看,伙计……我得到了答案。请检查代码


sb.追加(“”)

非常简单。我被这个代码困住了。请帮忙。嗨,我错过了下面的
code
sb.Append(“”;**但它仍然不工作。**我再次检查了aspx代码以确定它是否工作正常。正如你正确指出的那样,我也纠正了代码。请检查我是否遗漏了什么。问题仍然存在。因为我没有足够的回购。我不能在这里张贴图片。那么请不要接受答案,以便其他人可以提供帮助。万一我有空的话,我也会跑去看看。之后我可能会更新我的答案。但目前还不能接受这个答案,其他人可能会有不同的看法。GoodluckAlso,你能推荐一种方法吗?通过这种方法,我可以找到div的ID,而不必将其作为服务器控件。我指的是ID=div\u postOk肯定会看到的。请检查我的回答我更新了我刚刚注意到的内容。如果你看到,我正在清除
str\u build
之前,将值存储在另一个字符串
中,这样我就不会在运行时丢失值。
 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;
}