0 votes

La mise à jour dans asp.net avec linq ne fonctionne pas

J'ai un problème étrange. J'essaie de mettre à jour certains champs à l'aide de linq et cela ne fonctionne pas. J'ai essayé de construire le site et de le déboguer, ce qui fonctionne et montre que la fonction est appelée. J'ai aussi essayé d'ajouter manuellement les valeurs dans le fichier code behind et cela fonctionne aussi mais d'une manière ou d'une autre lors de l'exécution, le formulaire ne transmet pas les valeurs des champs texte.

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="AddEditBook1.aspx.cs" MasterPageFile="../AdminMaster.master" Inherits="AdminPanel_AddEditBook1" Title="Add or Edit Book Page"%>

<asp:Content ID="Content1" ContentPlaceHolderID="ContentPagePlaceHolder1" Runat="Server">
<div class="content"> 
    <div class="titleMain">Library -> Add or Edit Book Page
    </div>
    <h1><span></span>Add or Edit Book Page</h1>

    <div class="contentpage" >
        <p>On this page you can Add or Edit Book Page</p>

        <asp:Label ID="AddEditBookMsg" runat="server" Visible="false" />

            <table width="650"  class="table" cellspacing="15">
                <tr>
                    <td>Book ID</td>
                    <td><asp:Label ID="BookId" runat="server" /></td>
                </tr>
                <tr>
                    <td>Book name</td>
                    <td><asp:TextBox ID="BookName" runat="server" /></td>
                </tr>
                <tr>
                    <td>Author</td>
                    <td><asp:TextBox ID="BookAuthor" runat="server" Text="" /></td>
                </tr>

Code :

using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;

public partial class AdminPanel_AddEditBook1 : System.Web.UI.Page
{
    // book represents 3 tables
    protected void Page_Load(object sender, EventArgs e)
    {
        AddEditBookMsg.Visible = false;
        if (Request["book_id"] != null)
        {
            GetExistingBook();
        }
    }

    public void GetExistingBook()
    {
        BooksDataContext book = new BooksDataContext();
        int book_id = Int32.Parse(Request["book_id"].ToString());
        var bookexist = book.books.Single(b => b.book_id == book_id);
        var bookDDL = from c in book.categories
                      select c;
        var bookexistdesc = book.bookdescs.Single(bds => bds.book_id == book_id);
        if (bookexist.book_id == book_id)
        {
            BookName.Text = bookexist.book_name;
            BookAuthor.Text = bookexist.book_author;
            BookShortDesc.Text = bookexist.book_short_desc;
            BookLongDesc.Text = bookexistdesc.book_long_desc;
            BookImg.Text = bookexist.book_img;
            BookSqu.Text = bookexist.book_squ;
            BookArrived.Text = bookexist.book_arrived.ToString();
            BookQty.Text = bookexist.book_qty.ToString();

            if (!Page.IsPostBack)
            {
                CaID.DataSource = bookDDL;
                CaID.DataTextField = "ca_name";
                CaID.DataValueField = "ca_id";
                CaID.DataBind();
            }
        }
    }

    protected void update_Click(object sender, EventArgs e)
    {
        BooksDataContext book = new BooksDataContext();

        int book_id = Int32.Parse(Request["book_id"].ToString());
        book bookexist2 = book.books.Single(b1 => b1.book_id == book_id);
        bookdesc bookexistdesc2 = book.bookdescs.Single(bds1 => bds1.book_id == book_id);

        bookexist2.book_name = BookName.Text;
        bookexist2.book_author = BookAuthor.Text.ToString();
        bookexist2.book_short_desc = BookShortDesc.Text;

        bookexist2.book_img = BookImg.Text;
        bookexist2.book_squ = BookSqu.Text;
        bookexist2.book_arrived = DateTime.Parse(BookArrived.Text);
        bookexist2.book_qty = Int32.Parse(BookQty.Text);

        bookexistdesc2.book_long_desc = BookLongDesc.Text;
        book.SubmitChanges();
    }
}

1voto

KristoferA Points 8036

Vous avez oublié de vérifier s'il s'agit d'un postback dans Page_Load. Vous rechargerez la base de données lors d'un postback également...

if (!IsPostback())
{
  if (Request["book_id"] != null)
  {
    GetExistingBook();
  }
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X