0

ユーザーが送信した後、ページにロードされた値をデータベースに配置しようとすると、奇妙な結果になります。

ページが読み込まれると、次のようになります。

Public theProductName As String = ""
Dim theProductCategory As String = ""

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    If Not IsPostBack Then
        LoadProductName()
    End If
End Sub

Private Sub LoadProductName()
    objConn = New MySqlConnection(product.strConnString)
    objConn.Open()

    strSQL = "SELECT id, name, category " & _
                "FROM product " & _
                "WHERE id = 4;"

    Try
        objCmd = New MySqlCommand(strSQL, objConn)
        dtReader = objCmd.ExecuteReader()

        While dtReader.Read()
            theProductName = dtReader("name")
            theProductCategory = dtReader("category")
            btnSubmit.Text = "Add Item to " & theProductName
        End While

        dtReader.Close()
        dtReader = Nothing
        objConn.Close()
        objConn = Nothing
    Catch ex As Exception
        MsgBox("LoadProductName: " & ex.Message)
    End Try
End Sub

ページの起動時にこれらの値を確認すると、正しい値があり、送信ボタンにも製品名があります。

しかし、ボタンを押して保存すると、何もないのと同じ変数がありますか?

Private Sub btnSubmit_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnSubmit.Click

   Dim productName As String = theProductName.Replace(" ", "-")
   Dim imageName As String = productName & "\" & Trim(txtModel.Text) & ".jpg'"       
   Dim theCat as String = theProductCategory
End Sub

ここでのproductNameは、 theCatのように何もありません。

何を見落とすことができますか?

4

2 に答える 2

1

ViewStateデータを投稿したため、古い状態が失われたため、データを永続化する必要があります

public string ProductName 
{
  get
  {
      if( Viewstate["ProductName"] == null)
      {
         return string.Empty;
      }
      return (string)Viewstate["ProductName"];
   } 
  set
  {
     Viewstate["ProductName"] = value;
  }
}

値を設定する

ProductName = "your value";
于 2012-08-09T15:38:44.077 に答える
1

これは、theProductName最初のロード時にポストバックされていない場合にのみ読み取り、その後どこにも保存されないためです。

変数theProductName, をビューステートに配置して、ポストバック後に同じにすることができます。

msdn からの例とその他のコメント: http://msdn.microsoft.com/en-us/library/ms227551(v=vs.85).aspx

于 2012-08-09T15:37:36.540 に答える