Получение значения из динамического c ASP. NET текстового поля в таблице HTML - PullRequest
0 голосов
/ 09 января 2020

Я пытаюсь сослаться на текст в текстовом поле ASP. NET, которое было загружено при нажатии кнопки в таблице HTML. Таблица stati c, но затем строки генерируются динамически с текстовыми полями. Я заново загрузил элементы управления, и значения остались в текстовых полях на почтовом ящике, но я получаю следующую ошибку: «Ссылка на объект не установлена ​​для экземпляра объекта». Я предполагаю, что это потому, что ему не удалось найти текстовое поле в таблице должным образом. Единственное, что стоит упомянуть, это то, что я не использую пространство имен 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";
                }

            }
        }

    }
}
...