2013-07-01 146 views
0

我有這個類(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(); 
    } 
+4

哪裏'TextBox'?我看到的只是一個字符串屬性「TicketNum」!另外你的*保存點擊*真的不保存任何東西? – V4Vendetta

+0

應該假設爲textbox.text。但我不知道如何將文本框內的值放入 – user1954418

+1

很簡單: textbox.Text = yourvalue; –

回答

0

看看以下內容:

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
  • SelectTop1方法返回一個字符串值,這是在Main類(也許你甚至可以把它靜態內部使用創建主要類的一個實例,所以你並不需要一個在Class1類的實例來稱呼它)
  • MessageBox類是在WinForms的使用,也許你應該使用一些JavaScript警報
+0

謝謝你的男人!這是一種在OOP中編寫代碼的方法嗎? – user1954418

2

您的字符串TicketNum將始終爲空,因爲您尚未爲其分配值。

幸運的是,字符串不會自動連接到文本框,這將是非常令人沮喪的。

要指定字符串文本框,然後:

string TicketNum = txtbox.Text; 

通過你的問題的聲音,那麼這可能並非如此,這聽起來像你想一個文本框,在這一點出現在你的表格。所以要做到這一點,你需要爲你的表單創建一個新的文本框。您可以在工具箱中或動態執行此操作。我會告訴你如何動態地做到這一點:

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

當然,你會命名這些文本框爲更適合的名稱。然後,您將返回到您的字符串ticketnum並更新它以調用名稱文本框ID。

編輯

我已經回答了問你的問題,但看你的意見,我可以看到你的問題是質量很差。這聽起來更像是你想從主類的txtbox傳遞信息給這個類。面向對象使得這非常簡單。在主類中,您需要將txtbox存儲到字符串中。然後你需要在你的新類中創建一個構造函數,然後將字符串參數傳遞給你的新類構造函數。

如果您不確定這一點,我會建議您查看Constructors,以及對OOP的全部檢查,看看this msdn article

EDIT2

之前,所以成爲谷歌,我相信你應該重新閱讀了關於OOP,你沒有理解。在這個類中,你可以使用繼承而不是在這個類中調用主類,不知道爲什麼你會這樣做。如果你閱讀我給你的文章,我會認爲你現在已經看到你的錯誤並解決了這個問題。

+0

我想這行的值「main.TicketNum = com_retrieve.ExecuteScalar()。ToString(); 」被放置在一個文本框。但我不知道如何。我已經嘗試了很多方法將外部類的值傳遞給我的主類,但這一切都無效。 – user1954418