Adatlap Nem módosul le!

Adatlap Nem módosul le!
2012-08-09T08:48:10+02:00
2012-08-09T14:48:13+02:00
2022-11-26T13:30:46+01:00
cofoska
Sziasztok!

A problémám az lenne hogy készítettem egy felhasználói regisztrációt visual studio-ban rendben működik kibővítettem plusz mezőkkel eddig nincs is vele probléma. Mikor bejelentkezik a felhasználó és szeretne módosítani az adatlapján szépen ki is írja az adatait, rámegy a módosításra sajnos nem módosulnak le. Az alap visual studio users adattáblához egy members mappát hoztam létre plusz mezőkkel amit LINQ segítségével fűztem össze.

Az adatlap ami nem módosul:
.aspx fájl:

<%@ Page Title="" Language="C#" MasterPageFile="~/Hirdeto/designhirdeto.master" AutoEventWireup="true" CodeFile="HirdetoAdatlap.aspx.cs" Inherits="Hirdeto_HirdetoAdatlap" %> <asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server"> <style type="text/css"> .style4 { width: 393px; } .style5 { width: 137px; } </style> </asp:Content> <asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server"> <p> <br /> <table class="style4"> <tr> <td class="style5"> Név:</td> <td> <asp:TextBox ID="txtbox_name" runat="server" Width="200px"></asp:TextBox> <asp:RequiredFieldValidator ID="RFV_name" runat="server" ControlToValidate="txtbox_name" Display="Dynamic" ErrorMessage="Nem töltötte ki a mezőt" ValidationGroup="requireddatas">*</asp:RequiredFieldValidator> </td> </tr> <tr> <td class="style5"> Cégnév:</td> <td> <asp:TextBox ID="txtbox_cegnev" runat="server" Width="200px"></asp:TextBox> <asp:RequiredFieldValidator ID="RFV_cegnev" runat="server" ControlToValidate="txtbox_cegnev" Display="Dynamic" ErrorMessage="Nem töltötte ki a mezőt" ValidationGroup="requireddatas">*</asp:RequiredFieldValidator> </td> </tr> <tr> <td class="style5"> Cég irányító:</td> <td> <asp:TextBox ID="txtbox_cegiranyito" runat="server" Width="200px"></asp:TextBox> <asp:RequiredFieldValidator ID="RFV_cegiranyito" runat="server" ControlToValidate="txtbox_cegiranyito" Display="Dynamic" ErrorMessage="Nem töltötte ki a mezőt" ValidationGroup="requireddatas">*</asp:RequiredFieldValidator> </td> </tr> <tr> <td class="style5"> Cég levelezési cím:</td> <td> <asp:TextBox ID="txtbox_levcimceg" runat="server" Width="200px"></asp:TextBox> <asp:RequiredFieldValidator ID="RFV_levcimceg" runat="server" ControlToValidate="txtbox_levcimceg" Display="Dynamic" ErrorMessage="Nem töltötte ki a mezőt" ValidationGroup="requireddatas">*</asp:RequiredFieldValidator> </td> </tr> <tr> <td class="style5"> Levelezési cím:</td> <td> <asp:TextBox ID="txtbox_levcim" runat="server" Width="200px"></asp:TextBox> <asp:RequiredFieldValidator ID="RFV_levcim" runat="server" ControlToValidate="txtbox_levcim" Display="Dynamic" ErrorMessage="Nem töltötte ki a mezőt" ValidationGroup="requireddatas">*</asp:RequiredFieldValidator> </td> </tr> <tr> <td class="style5"> Bankszámlaszám:</td> <td> <asp:TextBox ID="txtbox_bankszamla" runat="server" Width="200px"></asp:TextBox> <asp:RequiredFieldValidator ID="RFV_bankszamla" runat="server" ControlToValidate="txtbox_bankszamla" Display="Dynamic" ErrorMessage="Nem töltötte ki a mezőt" ValidationGroup="requireddatas">*</asp:RequiredFieldValidator> </td> </tr> <tr> <td class="style5"> Kapcsolattartó neve:</td> <td> <asp:TextBox ID="txtbox_kapcsnev" runat="server" Width="200px"></asp:TextBox> <asp:RequiredFieldValidator ID="RFV_kapcsnev" runat="server" ControlToValidate="txtbox_kapcsnev" Display="Dynamic" ErrorMessage="Nem töltötte ki a mezőt" ValidationGroup="requireddatas">*</asp:RequiredFieldValidator> </td> </tr> <tr> <td class="style5"> Telefonszám:</td> <td> <asp:TextBox ID="txtbox_tel" runat="server" Width="200px"></asp:TextBox> <asp:RequiredFieldValidator ID="RFV_tel" runat="server" ControlToValidate="txtbox_tel" Display="Dynamic" ErrorMessage="Nem töltötte ki a mezőt" ValidationGroup="requireddatas">*</asp:RequiredFieldValidator> </td> </tr> </table><br /> <br /><br /> <asp:Button ID="Button1" runat="server" Text="Mentés" ValidationGroup="requireddatas" onclick="Button1_Click" PostBackUrl="~/Hirdeto/Default.aspx" /> </p> <asp:ValidationSummary ID="ValidationSummary1" runat="server" ShowMessageBox="True" ShowSummary="False" ValidationGroup="requireddatas" /> <p> &nbsp;</p> </asp:Content>

Maga a mögöttes kód:

using System.Web.UI; using System.Web.UI.WebControls; public partial class Hirdeto_HirdetoAdatlap : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { MembersDataContext mdc = new MembersDataContext(); IQueryable<member> mems; member mem = new member(); mems = from m in mdc.members where m.Nickname == User.Identity.Name select m; mem = mems.First(); txtbox_name.Text = mem.Nickname; txtbox_name.DataBind(); txtbox_cegnev.Text = mem.Cegnev; txtbox_cegnev.DataBind(); txtbox_cegiranyito.Text = mem.Cegiranyito; txtbox_cegiranyito.DataBind(); txtbox_levcimceg.Text = mem.Levcimceg; txtbox_levcimceg.DataBind(); txtbox_levcim.Text = mem.Levcim; txtbox_levcim.DataBind(); txtbox_bankszamla.Text = mem.Bankszamla; txtbox_bankszamla.DataBind(); txtbox_kapcsnev.Text = mem.Kapcsnev; txtbox_kapcsnev.DataBind(); txtbox_tel.Text = mem.Tel; txtbox_tel.DataBind(); } } protected void Button1_Click(object sender, EventArgs e) { string name = txtbox_name.Text; string cegnev = txtbox_cegnev.Text; string cegiranyito = txtbox_cegiranyito.Text; string levcimceg = txtbox_levcimceg.Text; string levcim = txtbox_levcim.Text; string bankszamla = txtbox_bankszamla.Text; string kapcsnev = txtbox_kapcsnev.Text; string tel = txtbox_tel.Text; MembersDataContext mdc = new MembersDataContext(); IQueryable<member> mems; member mem = new member(); mems = from m in mdc.members where m.Nickname == User.Identity.Name.ToString() select m; mem = mems.First(); mem.Nickname = name; mem.Cegnev = cegnev; mem.Cegiranyito = cegiranyito; mem.Levcimceg = levcimceg; mem.Levcim = levcim; mem.Bankszamla = bankszamla; mem.Kapcsnev = kapcsnev; mem.Tel = tel; } }

Lehet én nem veszek észre valamit vagy kihagytam, előre is köszönöm a segítséget akinek van ötlete rá!
Mutasd a teljes hozzászólást!
Gondolatébresztőnek itt van két példa metódus a beszúrásra illetve a módosításra:

private void InsertUser() { MembersDataDataContext mdc = new MembersDataDataContext(); member mem = new member(); mem.name = txtbox_name.Text; mem.tel = txtbox_tel.Text; mdc.members.InsertOnSubmit(mem); mdc.SubmitChanges(); } private void UpdateUser() { MembersDataDataContext mdc = new MembersDataDataContext(); member mem = (from m in mdc.members where m.name == User.Identity.Name select m).Single(); mdc.members.Attach(mem); mem.name = txtbox_name.Text; mem.tel = txtbox_tel.Text; mdc.SubmitChanges(); }

Természetesen az oldaladat módosítani kell, hogy egyértelműen kezelje az új rekord beszúrását illetve egy meglévő frissítését.
Mutasd a teljes hozzászólást!

  • Van ötlet, sehol nem látszik, hogy elmentenéd (pl. mdc.SaveChanges() vagy mdc.SubmitChanges(), attól függően, hogy pontosan milyen ORM-et használsz).

    Még egy dolog: a bindolásnál ezek

    txtbox_bankszamla.DataBind();

    elég feleslegesnek tűnnek, hiszen itt a TextBox-ok property-jeit állítod be, nem bindolsz (de szép ősmagyar szó ).

    Na még egy, ennél:

    mem = mems.First();

    célszerűbb lenne

    mem = mems.Single();

    kódot használni, mert a First() a találatok elsőjét választja ki, a Single() pedig pontosan a várt egy darab rekordot adja vissza, és exception-t is dob, ha nem pontosan egy jött. Sok csúnya hibalehetőségtől óvhat ez meg.

    Az sem egyértelmű, hogy a Button1_Click() metódusod hozzáad vagy frissít, mert igazából egyiket sem teszi.

    Ha hozzáadod a felhasználót, akkor hiányzik egy

    mdc.members.AddObject(mem);

    ha frissíted, akkor pedig egy

    mdc.members.Attach(mem);

    Új példányt (member mem = new member();) csak valóban új példány esetén hozz létre, frissítésnél az Attach által visszaadottat használd!
    Mutasd a teljes hozzászólást!
  • Kezdjük az ORM verzióval: pontosan mit használsz?

    Linq to SQL vagy Entity Framework?

    Melyik verzió? .NET 3.5 v. 4?
    Mutasd a teljes hozzászólást!
  • Szia!

    Linq to SQL-t használok és net 3.5 -el Van ötleted? Köszi a helpet.
    Mutasd a teljes hozzászólást!
  • Gondolatébresztőnek itt van két példa metódus a beszúrásra illetve a módosításra:

    private void InsertUser() { MembersDataDataContext mdc = new MembersDataDataContext(); member mem = new member(); mem.name = txtbox_name.Text; mem.tel = txtbox_tel.Text; mdc.members.InsertOnSubmit(mem); mdc.SubmitChanges(); } private void UpdateUser() { MembersDataDataContext mdc = new MembersDataDataContext(); member mem = (from m in mdc.members where m.name == User.Identity.Name select m).Single(); mdc.members.Attach(mem); mem.name = txtbox_name.Text; mem.tel = txtbox_tel.Text; mdc.SubmitChanges(); }

    Természetesen az oldaladat módosítani kell, hogy egyértelműen kezelje az új rekord beszúrását illetve egy meglévő frissítését.
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd