<td> 요소 내에서 내 링크 버튼 컨트롤을 볼 수 없습니다
-
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 + "')\" />");
CN 너도 시도해봐 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;
}
행운을 빌어요 .해보고 사람을 만나보세요....