غير قادر على رؤية عنصر التحكم في زر الارتباط الخاص بي داخل عنصر <td>

StackOverflow https://stackoverflow.com//questions/20040338

سؤال

يرجى التحقق من الكود أدناه، حيث أستطيع إنشاء الجدول ديناميكيًا من قاعدة البيانات.ولكن غير قادر على عرض زر الارتباط داخل <td> عنصر.

الوظيفة الأساسية هي إنشاء ملف جديد <tr> لكل صف في جدول قاعدة البيانات مع إضافة زر الارتباط.

كود أسبكس

<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 الخاص بك موجود في حلقة وبالتالي يُرجع صفًا واحدًا في كل مرة.يمكنك نسخ طريقة 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;
}

حظ سعيد .حاول وانظر يا رجل....

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top