2016-09-02 24 views
0

グリッドビューの値を他のページに送信して、グリッドビューの値を更新しようとしています。ここでは、カテゴリドロップダウンリストの値と画像ファイルのみを更新できます。私はテキストボックスの値を更新することができません。ここで更新ページのデータを更新できません

が..私のコードです

更新商品コード:

protected void SubmitButton_Click(object sender, EventArgs e) 
    { 
     int productId = Convert.ToInt32(Request.QueryString["ProductID"]); 

     Product product = new Product(); 

     product.ProductID = productId; 
     product.ProductName = TitleTextBox.Text; 
     product.Description = DescriptionTextBox.Text; 
     product.ItemsInSet = Convert.ToInt32(SetTextBox.Text); 
     product.UnitPriceOwner = Convert.ToInt32(UnitResellerTextBox.Text); 
     product.UnitPriceReseller = Convert.ToInt32(UnitResellerTextBox.Text); 
     product.ShippingCost = Convert.ToInt32(ShipmentTextBox.Text); 
     product.CategoryID = Convert.ToInt32(CategoryDropDownList.SelectedValue.ToString()); 
     product.Visible = true; 
     product.InOffer = false; 

     if (ImageUpload.HasFile) 
     { 
      int length = ImageUpload.PostedFile.ContentLength; 
      product.ProductImage = new byte[length]; 
      ImageUpload.PostedFile.InputStream.Read(product.ProductImage, 0, length); 
     } 
     else 
     { 
      Byte[] image; 

      image = ProductBL.GetImage(productId); 
      product.ProductImage = image; 
     } 

     ProductBL.UpdateProduct(product); 
     MessageLabel.Text = "Product successfully Updated!"; 
    } 

UpdateProduct()コード:

public static void UpdateProduct(Product product) 
    { 
     string query = "UPDATE [Products] SET [ProductName] = @ProductName, [Description] = @Description, [ItemsInSet] = @ItemsInSet, " + 
         "[UnitPriceOwner] = @UnitPriceOwner, [UnitPriceReseller] = @UnitPriceReseller, [CategoryID] = @CategoryID, " + 
         "[ShippingCost] = @ShippingCost, [InOffer] = @InOffer, [ProductImage] = @ProductImage, [Visible] = @Visible WHERE [ProductID] = @ProductID"; 
     SqlCommand cmd = new SqlCommand(query); 

     cmd.Parameters.AddWithValue("@ProductName", SqlDbType.Text).Value = product.ProductName; 
     cmd.Parameters.AddWithValue("@Description", SqlDbType.Text).Value = product.Description; 
     cmd.Parameters.AddWithValue("@ItemsInSet", SqlDbType.Int).Value = product.ItemsInSet; 
     cmd.Parameters.AddWithValue("@UnitPriceOwner", SqlDbType.Int).Value = product.UnitPriceOwner; 
     cmd.Parameters.AddWithValue("@UnitPriceReseller", SqlDbType.Int).Value = product.UnitPriceReseller; 
     cmd.Parameters.AddWithValue("@CategoryID", SqlDbType.Int).Value = product.CategoryID; 
     cmd.Parameters.AddWithValue("@ShippingCost", SqlDbType.Int).Value = product.ShippingCost; 
     cmd.Parameters.AddWithValue("@InOffer", SqlDbType.Bit).Value = product.InOffer; 
     cmd.Parameters.AddWithValue("@Visible", SqlDbType.Bit).Value = product.Visible; 
     cmd.Parameters.AddWithValue("@ProductID", SqlDbType.Text).Value = product.ProductID; 

     cmd.Parameters.Add("@ProductImage", SqlDbType.Image).Value = product.ProductImage == null ? (object)DBNull.Value : product.ProductImage; 

     DbUtility.UpdateDb(cmd); 
    } 

ページの読み込みコード:

protected void Page_Load(object sender, EventArgs e) 
    { 
     int productId = 0; 
     productId = Convert.ToInt32(Request.QueryString["ProductID"]); 

     LoadProductDetails(productId); 
    } 

    protected void LoadProductDetails(int productId) 
    { 
     var product = ProductBL.GetProductById(productId); 

     TitleTextBox.Text = product.ProductName; 
     DescriptionTextBox.Text = product.Description; 
     SetTextBox.Text = Convert.ToInt32(product.ItemsInSet).ToString(); 
     UnitOwnerTextBox.Text = Convert.ToInt32(product.UnitPriceOwner).ToString(); 
     UnitResellerTextBox.Text = Convert.ToInt32(product.UnitPriceReseller).ToString(); 
     ShipmentTextBox.Text = Convert.ToInt32(product.ShippingCost).ToString(); 
    } 

親切に助け私

+0

どのようなエラーが発生していますか? – Webruster

+0

できないということはどういう意味ですか?あなたは 'MessageLabel'にあなたが設定した文字列を表示しないと言っていますか?あなたの 'Page_Load()'メソッドはどのように見えますか? – itsme86

+0

テキストボックスの値を更新できません。私はイメージとドロップダウン値を変更することができます。 – Orion

答えて

0

てみ常に

if(!IsPostback) 
{ 
//here 
} 
+0

追加情報:サーバーから結果を受け取るときにトランスポートレベルのエラーが発生しました。 (プロバイダ:Named Pipes Provider、エラー:0 - ハンドルが無効です) – Orion

+0

@OrionはVisual Studioを1回再起動します – Webruster

0

まず最初にあなたのLoadProductDetailsを読み込みエラーを取得し、任意のチャンスを避けるために、セッションやクエリ文字列変数を使用する前に、ヌル状態をチェックします。 ここでは、!IsPostbackの状態をチェックするために欠落していると思います。なぜなら、更新ボタンをクリックすると、更新された値がメソッドとして失われるからです。LoadProductDetails(productId);が呼び出されます。

関連する問題