繁体   English   中英

文本框不返回值

[英]Textbox doesn't return the value

我有这个类( Class1 )从查询中检索值。 现在我想让它面向对象,这就是为什么我这样写的。 现在的问题是, TextBoxTicketNum )不会返回值并在表单中显示它。 我不知道为什么。 救命。

 public partial class Main : System.Web.UI.Page
{
   private String _TicketNum;

    public String TicketNum
    {
        get { return _TicketNum; }
        set { _TicketNum = value; }
    }
}

  public class Class1
{
    Main main = new Main();
    public void SelectTop1()
    {
        using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString))
        {

            using (SqlCommand com_retrieve = new SqlCommand("usp_SelectTop1Ticket", con))
            {
                com_retrieve.CommandType = CommandType.StoredProcedure;
                con.Open();
               try
                {                     
                    main.TicketNum = com_retrieve.ExecuteScalar().ToString();
                    MessageBox.Show("Ticket Has been saved. Your Ticket Number: " + com_retrieve.ExecuteScalar().ToString(), "Ticket Filed");
                }
                catch (SqlException)
                {
                    MessageBox.Show("The database has encountered an error");
                }
                catch (Exception)
                {
                    MessageBox.Show("The server has encountered an error");
                }
            }
        }
    }
}

  protected void btn_Save_Click(object sender, EventArgs e)
    {
         Class1 selectTop1 = new Class1();
            selectTop1.SelectTop1();
    }

您的字符串TicketNum将始终为空,因为您尚未为其分配值。

幸运的是,字符串不会自动连接到文本框,这将非常令人沮丧。

要将字符串分配给文本框,请:

string TicketNum = txtbox.Text;

根据您的问题的声音,情况可能并非如此,听起来您希望文本框此时显示在您的表单中。 因此,要执行此操作,您需要为表单创建一个新的文本框。 您可以在工具箱中或动态地执行此操作。 我将向您展示如何动态地执行此操作:

TextBox txtbox = new TextBox();
txtbox.ID = "textBox1";
form1.Controls.Add(txtbox);

然后,您可以将这些文本框命名为更合适的名称。 然后,您将返回到您的字符串ticketnum并更新它以调用名称文本框ID。

编辑

我已经回答了你的问题,但是通过查看你的评论,我发现你的问题质量很差。 听起来更像是要将主要类中的txtbox中的信息传递给此类。 OOP使这非常简单。 在主类中,您需要将txtbox存储到字符串中。 然后,您需要在新类中创建构造函数,然后将字符串参数传递给新的类构造函数。

如果您对此不确定,我建议您查看构造函数 ,并查看这篇msdn文章的全部OOP。

EDIT2

在SO成为谷歌之前,我相信你应该再次阅读OOP,你还没有理解它。 在这个类中,您可以使用继承而不是在此类中调用主类,但不确定为什么要这样做。 如果您阅读我给你的文章我会认为你现在已经看到了你的错误并解决了这个问题。

看看以下内容:

public partial class Main : System.Web.UI.Page
{
    public String TicketNum
    {
        get { return textbox.Text; }
        set { textbox.Text = value; }
    }

    protected void btn_Save_Click(object sender, EventArgs e)
    {
        Class1 selectTop1 = new Class1();
        TicketNum = selectTop1.SelectTop1();
    }
}

public class Class1
{
    public string SelectTop1()
    {
        // assign the value from SQL to the response variable
        string response = "test";
        return response;
    }
}

请注意以下事项:

  • TicketNum从属性设置/获取价值/ textbox.Text财产
  • 没有必要(请读错/为什么会这样? )在Class1类中创建Main类的实例
  • SelectTop1方法返回一个字符串值,该值在Main类中使用(也许您甚至可以将其设置为静态,因此您不需要Class1类的实例来调用它)
  • MessageBox类在WinForms中使用,也许您应该使用一些JavaScript进行警报

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM