我正在 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;
我试图为您提供一种获得价值的方法,但我认为这不是一个好习惯。理想情况下,为了在表单或层之间传递值,您需要有某种机制来存储和检索值,例如上下文或会话。这不是解决方案,而是一种解决方法。如果代码因上述更改而混乱,我不承担任何责任。:)
YourPreviousForm.YourTextBox.Text
使用 的Text
属性获取文本框的值TextBox
。
PeriodFrom.Value =PrevForm.TextBox.Text;
正如您所说,由于保护级别,没有访问权限,您需要处理 form from protected
to的访问修饰符,public
以便可以访问它。
然后将文本框的修饰符属性更改为 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.";
}
如果您的 TextBox 在表单上公开声明,那么您将能够从创建它的范围访问它的属性。
PeriodFrom.Value = otherForm.TextBoxName.Text;
如果您现在无法使用“以前的”表单对象,那么您将必须检索该值并将其作为参数传递给您的新表单(或类似的东西)。如果您在此处需要帮助,请提供更多代码/详细信息。