【问题标题】:how to fill textboxes on a web page如何在网页上填充文本框
【发布时间】:2021-12-21 04:05:22
【问题描述】:

该网页是一个公共页面,它不是由我创建的。大约有 20 个文本框,我想一键用特定数据填充它们。关于如何做到这一点的任何想法?

ps。几年前我使用过 asp.net 和 c#,现在我记不太清了。但是提示应该就足够了,尽管如果您能完全指导,我将不胜感激。

ps2。看来我应该把代码写到我猜的 Windows 应用程序中。

【问题讨论】:

  • 它非常不清楚你在寻找什么 - 一个填充网页的程序,你想从程序本身来填充它吗?你想用你要填充的内容自动填充和发布它们 - 我认为你想要一种自动填充其他网页的方法,这与 asp.net 和 c#
  • 是的,假设有 20 个姓名、家庭和个人信息的文本框,我想要一个填充这些文本框的程序。我向程序提供数据,它通过单击填充整个文本框。我不想手动填写数据。之前看过一个节目。这是一个自动点击器。它接收按钮位置,并以特定时间和间隔单击该位置。所以我想也许有这样一种方法来填充文本框。
  • 这是一个完整的程序 - 有一些现有的可供查找和使用。
  • 你见过吗?有名字吗?

标签: c# asp.net web textbox


【解决方案1】:

如果你能满足于 javascript/typescript,https://testcafe.io/ 可能会实现你的目标。

【讨论】:

    【解决方案2】:

    嗯,这取决于。通常为了显示数据,我会说一个中继器,或者说一个数据列表控件。

    我什至使用向导创建带有字段的控件,然后删除说向导创建的数据源。

    所以,假设我们有这个标记:

    <asp:Repeater ID="Repeater1" runat="server">
        <ItemTemplate>
            <div style="border-style:solid;color:black;width:300px;float:left">
            <div style="padding:5px;text-align:right">
    
                Hotel Name: 
                <asp:TextBox ID="txtHotelName" runat="server" Text ='<%# Eval("HotelName") %>' />
                <br />                                                                                             
                First Name:
                <asp:TextBox ID="txtFirst" runat="server" Text ='<%# Eval("FirstName") %>' />
                <br />                                                                                             
                Last Name:
                <asp:TextBox ID="txtLast" runat="server" Text ='<%# Eval("LastName") %>'  />
                <br />                                                                                             
                City:
                <asp:TextBox ID="txtCity" runat="server" Text ='<%# Eval("City") %>'  />
                <br />
                Active:
                <asp:CheckBox ID="chkActive" runat="server" Checked = '<%# Eval("Active") %>'/>
    
                <asp:HiddenField ID="PK" runat="server" Value = '<%# Eval("ID") %>'/>
                
                <asp:Button ID="cmdDelete" runat="server" Text="Delete" style="margin-left:20px"                     
                   OnClick="cmdDelete_Click"/>
            </div>
        </div>
         <div style="clear:both;height:4px"></div>
        </ItemTemplate>
     </asp:Repeater>
    

    不,不是 20 个字段,但如果我在创建过程中使用向导选择所有 20 列,我至少不必输入以上内容 - 但只需在使用向导创建该转发器后“调整”它,或数据列表。

    好的,现在代码来填充上面的内容。

    看起来像这样:

       protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                LoadData();
            }
        }
    
        public void LoadData()
        {
            string strSQL = "SELECT * FROM tblHotels WHERE ID = 23 ORDER BY HotelName";
    
            using (SqlCommand cmdSQL = new SqlCommand(strSQL,
                                 new SqlConnection(Properties.Settings.Default.TEST4)))
            {
                cmdSQL.Connection.Open();
                Repeater1.DataSource = cmdSQL.ExecuteReader();
                Repeater1.DataBind();
            }
        }
    

    我们现在看到了:

    另一方面,如果我使用这个 SQL:

            string strSQL = "SELECT TOP 4 * FROM tblHotels ORDER BY HotelName";
    

    那么我现在明白了:

    因此,如您所见,显示我重复的“事物”中的 1 个或 20 个不再起作用。我可以说让重复遍历整个页面,我现在有了一个类似卡片视图的系统。

    您当然也可以只编写代码,然后将值放入文本框中。所以不用说中继器控件,只有他的文本框,那么这将起作用:

            string strSQL = "SELECT * FROM tblHotels ORDER BY HotelName";
            using (SqlCommand cmdSQL = new SqlCommand(strSQL,
                                 new SqlConnection(Properties.Settings.Default.TEST4)))
            {
                DataTable rstData = new DataTable();
        
                cmdSQL.Connection.Open();
                rstData.Load(cmdSQL.ExecuteReader());
    
                DataRow OneRow = rstData.Rows[0];
    
                txtHotelName.Text = OneRow["HotelName"].ToString();
                txtFirst.Text = OneRow["FirstName"].ToString();
                txtLast.Text = OneRow["LastName"].ToString();
                txtCity.Text = OneRow["City"].ToString();
                chkActive.Checked = (bool)OneRow["Active"];
                
            }
    

    所以你在这里有很多选择。当然,人们经常会引入一个模型框架(比如旧的数据集,或者现在的 EF(实体框架)。这会给你一个代码中的模型,因此你经常不记得字段名称,而你得到/拥有您和数据库之间的抽象层。

    而且大部分数据重复控件都乐于使用 EF 数据,甚至像上面展示的那样直接使用数据表。

    【讨论】:

      猜你喜欢
      • 2014-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-09
      • 1970-01-01
      相关资源
      最近更新 更多