문제

데이터베이스에서 동적으로 테이블을 생성할 수 있는 아래 코드를 확인하세요.하지만 내부에 링크 버튼을 표시할 수 없습니다. <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;
}

행운을 빌어요 .해보고 사람을 만나보세요....

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top