私はc#でSQLステートメントを作成しており、前の形式のテキストボックスから値を取得しようとしています。
SqlParameter PeriodFrom = new SqlParameter("@PeriodFrom", SqlDbType.VarChar);
PeriodFrom.Value =
等号の後に何が表示されるのかわかりません。フォームを試してみましたname.textbox name
。
フォームの背後にあるコードで、フォームクラス内で、プロパティを宣言できます。
public string TextBoxValue
{
get
{
return textBoxName.Text;
}
}
そして、次のようにSqlParameterで使用できます。
SqlParameter PeriodFrom = new SqlParameter("@PeriodFrom", SqlDbType.VarChar);
PeriodFrom.Value = FormClassName.TextBoxValue;
編集:
Formクラスオブジェクトは静的ではなく、永続化されないため、これは機能しません。これを機能させるには、Programクラスに変更を加える必要があります。次のように、Programクラスに静的データメンバーを追加する必要があります。
public static FormClassName form;
そして、以下のようにmainメソッドでこれを渡す必要があります。
form = new FormClassName();
Application.Run(form);
そして、SQLParameterでは、次のように渡すことができます。
SqlParameter PeriodFrom = new SqlParameter("@PeriodFrom", SqlDbType.VarChar);
PeriodFrom.Value = Program.form.TextBoxValue;
私はあなたに価値を得る方法の1つを与えようとしましたが、これは良い習慣ではないと思います。理想的には、フォーム間またはレイヤー間で値を渡すために、コンテキストやセッションなど、値を格納および取得するための何らかのメカニズムが必要です。これは解決策ではなく、回避策です。また、上記の変更によりコードがめちゃくちゃになった場合、私は責任を負いません。:)
YourPreviousForm.YourTextBox.Text
Text
のプロパティを使用してテキストボックスの値を取得しますTextBox
。
PeriodFrom.Value =PrevForm.TextBox.Text;
保護レベルのためにアクセス可能性がないと言っているので、フォームのアクセス修飾子をからprotected
にpublic
アクセスできるようにする必要があります。
TextBoxがフォームで公に宣言されている場合は、TextBoxが作成されたスコープからそのプロパティにアクセスできます。
PeriodFrom.Value = otherForm.TextBoxName.Text;
'previous'フォームオブジェクトが現在使用できない場合は、値を取得して、パラメータとして新しいフォーム(またはある種のもの)に渡す必要があります。ここでヘルプが必要な場合は、より多くのコード/詳細を提供してください。
テキストボックスの修飾子プロパティをPublicに変更してから
formname.textboxname.Text
<%@ PreviousPageType VirtualPath="~/SourcePage.aspx" %>
if(PreviousPage != null)
{
if(PreviousPage.IsCrossPagePostBack == true)
{
PeriodFrom.Value =PrevForm.TextBox.Text;
}
}
else
{
PeriodFrom.Value = "Not a cross-page post.";
}