【问题标题】:Displaying the dynamic HTML tr based on datatable records in c# asp.net在 c# asp.net 中显示基于数据表记录的动态 HTML tr
【发布时间】:2020-07-07 07:54:37
【问题描述】:

我有一个要求,我想根据来自datatable 的行生成动态 HTML tr 行。目前从我尝试过的代码中它只需要第一个数据表并显示在 HTML 中。

下面是我试过的代码

HTML

<tbody>
    <tr>
        <td align="center" width="4%">{SR_NO}</td>
        <td align="center" width="19%">{MAINTENANCE_POINT}</td>
    </tr>
</tbody>                                                

C#

for (int i = 0; i < dt.Rows.Count; i++)
{
    //outXml = outXml.Replace("{SR_NO}", );  // SR NO
    outXml = outXml.Replace("{MAINTENANCE_POINT}", dt.Rows[i]["ITEM"].ToString());
}

请帮助我如何根据数据表计数生成显示多个 tr。

更新问题

public void Export()
    {
        string CIRCLE = Request.Form[0];  //Request.Form["circleidSignOff"]
        string HOTODATE = Request.Form[1];

        if (CIRCLE == "GJ")
        {
            CIRCLE = "Gujarat";
        }

        string strCircleHotoDate = CIRCLE + "_" + HOTODATE;
        string strSignOffSheet = CIRCLE + '_' + HOTODATE + ".pdf";

        Document pdfDoc;
        pdfDoc = new Document(PageSize.A4, 10f, 10f, 10f, 10f);

        MemoryStream ms = new MemoryStream();
        PdfWriter pdfWriter = PdfWriter.GetInstance(pdfDoc, ms);

        SignOffAttrPDF ObjSingOffPDF = new SignOffAttrPDF();
        ObjSingOffPDF.Circle = CIRCLE;
        ObjSingOffPDF.HotoDate = HOTODATE;           
        pdfWriter.PageEvent = ObjSingOffPDF;

        pdfDoc.Open();

        string outXml = string.Empty;            
        string mon = "";

        CLSFilter ObjCLSFilter = new CLSFilter();
        string[] monthArray = { "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" };
        int month = Array.IndexOf(monthArray, HOTODATE.Split(' ')[0]);


        if (month <= 10)
        {
            mon = "0" + "" + month;
        }
        else
        {
            mon = "" + month;
        }

        string strDate = mon + "" + HOTODATE.Split(' ')[1];
        DataTable dt = ObjCLSFilter.SignOffSheetData1(CIRCLE, strDate);

        if (dt != null && dt.Rows.Count > 0)
        {
            ObjSingOffPDF.CreatedDateTime = DateTime.Now.ToString();

            using (StreamReader reader = new StreamReader(HttpContext.Server.MapPath("~/ExportToPdf.html")))
            {
                outXml = reader.ReadToEnd();

                outXml = outXml.Replace("{CIRCLE}", CIRCLE);
                outXml = outXml.Replace("{SP_NAME}", CIRCLE);
                outXml = outXml.Replace("{INVENTORY_FOR}", strDate);


                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    //outXml = outXml.Replace("{SR_NO}", );  // SR NO
                    outXml = outXml.Replace("{MAINTENANCE_POINT}", dt.Rows[i]["ITEM"].ToString());
                }


                reader.Close();
            }
        }

        string[] separator = new string[] { @"<br clear='all' style='page-break-before:always'>" };
        string[] pages = outXml.Split(separator, StringSplitOptions.None);
        int intPageCounter = 0;

        foreach (string page in pages)
        {
            //List<IElement> htmlarraylist = HTMLWorker.ParseToList(new StringReader(page), null);

            List<IElement> htmlarraylist = XMLWorkerHelper.ParseToElementList(outXml, null);

            if (intPageCounter > 0)
            {
                pdfDoc.NewPage();
            }

            pdfDoc.SetMargins(20, 20, 60, 40);

            for (int k = 0; k < htmlarraylist.Count; k++)
            {
                pdfDoc.Add((IElement)htmlarraylist[k]);
            }
            intPageCounter++;
        }
        pdfDoc.Close();

        string UploadFolderPath = ConfigurationManager.AppSettings["UploadFolderPath"].ToString();

        string strFilePath = Server.MapPath(UploadFolderPath) + "" + strSignOffSheet + ".pdf" ;

        using (ZipFile zip = new ZipFile())
        {
            zip.AlternateEncodingUsage = ZipOption.AsNecessary;
            if (Directory.Exists(strFilePath))
            {
                DirectoryInfo di = new DirectoryInfo(strFilePath);
                FileInfo[] FileInfo = di.GetFiles();

                if (FileInfo.Length > 0)
                {
                    foreach (FileInfo item in FileInfo)
                    {
                        zip.AddFile(item.FullName, "Files");
                    }
                }
            }

            Stream Objstream = new MemoryStream(ms.ToArray());
            Objstream.Seek(0, SeekOrigin.Begin);

            zip.AddEntry(strSignOffSheet, Objstream);

            HttpContext.Response.Clear();
            HttpContext.Response.BufferOutput = false;
            string zipName = String.Format("Zip_{0}.zip", CIRCLE + "_" + HOTODATE);
            HttpContext.Response.ContentType = "application/zip";
            HttpContext.Response.AddHeader("content-disposition", "attachment; filename=" + zipName);
            zip.Save(HttpContext.Response.OutputStream);
            HttpContext.Response.End();
        }

    }

【问题讨论】:

  • 您想要服务器大小的分页或一次所有数据?
  • @AbhishekPandey:是的,我希望服务器的所有动态数据都以 HTML 格式设置并根据 dt 行生成其行
  • 你在使用剃刀视图吗,如果是,那么你可以使用@dtdt.Rows[i]["ITEM"].ToString()获取数据,你可以将它包装到tr &gt; td
  • 您使用的是 asp.net MVC 还是 asp.net Web 表单?
  • 还有tr &gt; td应该被包裹在for loop

标签: javascript c# html asp.net


【解决方案1】:

如果你使用的是MVC,你可以在cshtml中使用这段代码

<tbody>
  @foreach(item in dt.Rows) {
  <tr>
    <td align="center" width="4%">@item.SR_NO</td>
    <td align="center" width="19%">@item.MAINTENANCE_POINT</td>
  </tr>
  }
</tbody>

更多详情:Loop through Model items in ASP.NET MVC

【讨论】:

  • 不工作,我在 PDF 中得到的硬编码值与 @item.SR_NO@item.MAINTENANCE_POINT 一样
  • 你确定你的页面是 CSHTML 吗?
  • 不,我没有使用 CSHTML。这是简单的纯 HTML 文件。
  • 那就不行了,你是如何将数据绑定到html的?
  • 如果你愿意,我可以给你看 HTML 文件。如果在 CSHTML 中可行,我们可以把它改成相同的。我受 {FIELD_NAME} 约束。我会更新我的问题
猜你喜欢
  • 2017-01-17
  • 1970-01-01
  • 1970-01-01
  • 2012-12-01
  • 1970-01-01
  • 2019-12-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多