簡體   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