0

我试图引用在 HTML 表中单击按钮时加载的 ASP.NET 文本框中的文本。该表是静态的,但随后会使用文本框动态生成行。我重新加载了控件,值仍保留在邮箱的文本框中,但出现以下错误 - “对象引用未设置为对象的实例。” 我假设这是因为它未能正确定位表格中的文本框。唯一值得一提的是我没有使用 System.Web.UI.HtmlControls 命名空间(因为我似乎在使用时遇到了其他错误),所以我每次都必须调用它。这有关系吗?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Data;
using System.Web.UI.WebControls;
using System.Net;
using Newtonsoft.Json;

namespace Generic_name
{
    public partial class Generatorwebform : System.Web.UI.Page
    {
        protected void Page_init(object sender, EventArgs e)
        {

        }
        protected void Page_Load(object sender, EventArgs e)
        {
            if (this.IsPostBack)
            {
                Response.Write("This is a postback");
            }

            if (Convert.ToString(ViewState["Generated"]) == "true")
                Getmarketdata();

        }

        protected void Getdatabtn_Click(object sender, EventArgs e)
        {
            Getmarketdata();


        }

        protected void Generatedatabtn_Click(object sender, EventArgs e)
        {
            Response.Write("Generate data button clicked");
            if (Convert.ToString(ViewState["Generated"]) != "true")
            {
                Getmarketdata();
                ViewState["Generated"] = "true";
            }
            else
            {
                Response.Write("viewstate already generated");
            }
            int GeneratorTableRows = GeneratorTable.Rows.Count;
            Response.Write(GeneratorTableRows - 1);


///THIS PART IS THE PROBLEM
            System.Web.UI.HtmlControls.HtmlTable Htmlgeneratortable = ((System.Web.UI.HtmlControls.HtmlTable)GeneratorTable);
            TextBox txt = Htmlgeneratortable.Rows[1].FindControl("tbBbl") as TextBox;
            Response.Write(txt.Text);
        }


        public void Getmarketdata()
        {
            String url = "https://www.genericapi.com";
            Response.Write(url);

            using (var webclient = new WebClient())
            {
                String Rawjson = webclient.DownloadString(url);
                dynamic dobj = JsonConvert.DeserializeObject<dynamic>(Rawjson);
                int noofrecords = dobj["properties"].Count;
                Response.Write("<br />" + noofrecords);
                for (int i = 0; i < noofrecords; i++)
                {
                    System.Web.UI.HtmlControls.HtmlTableRow tRow = new System.Web.UI.HtmlControls.HtmlTableRow();
                    String RMlink = String.Format("https://www.genericapi.co.uk" + dobj["data"][i]["identifier"].ToString()) + ".html";
                    HyperLink hypLink = new HyperLink();
                    hypLink.Text = dobj["data"][i]["identifier"].ToString();
                    hypLink.Target = "_blank";
                    hypLink.NavigateUrl = RMlink;
                    using (System.Web.UI.HtmlControls.HtmlTableCell tb1 = new System.Web.UI.HtmlControls.HtmlTableCell())
                    {
                        tRow.Cells.Add(tb1);
                        tb1.Controls.Add(hypLink);
                    }
                    using (System.Web.UI.HtmlControls.HtmlTableCell tb2 = new System.Web.UI.HtmlControls.HtmlTableCell())
                    {
                        TextBox tbEPCe = new TextBox();
                        tRow.Cells.Add(tb2);
                        tb2.Controls.Add(tbEPCe);
                        tbEPCe.Style.Add("background", "none"); tbEPCe.Style.Add("border", "1px solid black"); tbEPCe.Style.Add("border-radius", "2px");
                    }

                    using (System.Web.UI.HtmlControls.HtmlTableCell tb3 = new System.Web.UI.HtmlControls.HtmlTableCell())
                    {
                        TextBox tbEPCp = new TextBox();
                        tRow.Cells.Add(tb3);
                        tb3.Controls.Add(tbEPCp);
                        tbEPCp.Style.Add("background", "none"); tbEPCp.Style.Add("border", "1px solid black"); tbEPCp.Style.Add("border-radius", "2px");

                    }
                    using (System.Web.UI.HtmlControls.HtmlTableCell tb4 = new System.Web.UI.HtmlControls.HtmlTableCell())
                    {
                        TextBox tbBbl = new TextBox();
                        tRow.Cells.Add(tb4);
                        tb4.Controls.Add(tbBbl);
                        tbBbl.Style.Add("background", "none"); tbBbl.Style.Add("border", "1px solid black"); tbBbl.Style.Add("border-radius", "2px");
                    }

                    GeneratorTable.Rows.Add(tRow);
                    ViewState["Generated"] = "true";
                }

            }
        }

    }
}
4

0 回答 0