Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

συνδεση gridview με formview

Îåêßíçóå áðü ôï ìÝëïò themisomagos. Τελευταία δημοσίευση από το μέλος Markos στις 30-12-2009, 19:36. Υπάρχουν 4 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  27-12-2009, 21:51 56091

    συνδεση gridview με formview

    καλησπέρα και χρόνια πολλά.
    έχω το εξής θέμα:
    έχω ένα formview και mia accessdatasource η οποία συνδέεται με ένα συγκεκριμένο πίνακα στη βάση μου.
    από το formviewκάνω εισαγωγή δεδομένων στη βάση.
    ακριβώς απο κάτω έχω κ ένα gridview το οποίο είναι συνδεδεμένο με το ίδιο accessdatasource και εμφανίζει όλες τις εγγραφές που έχει ο πίνακας (αυτές ουσιαστικά που έχω εισάγει μόλις)
    αυτό που θέλω να κάνω είναι να μπορώ να επιλέγω μία εγγραφή από το gridview και να γεμίζουν τα textbox στο formview με τα δεδομένα της εγγραφής.επίσης θέλω από insertmode το formview να περνάει σε edit/update mode όπου θα μπορώ να αλλάξω κάποιο από τα δεδομένα (όχι το κλειδί) και να κάνει ουσιαστικά update τη συγκεκριμένη εγγραφή στον πίνακα.

    ευχαριστώ εκ των προτέρων

    θεμιστοκλής
  •  28-12-2009, 14:45 56096 σε απάντηση της 56091

    Απ: συνδεση gridview με formview

    θεμιστοκλή,

    χρόνια πολλά,

    ξέρω την λύση αλλά βαριέμαι αφόρητα, λόγω εορτών......

    αλλά

    αν δεις αυτό το video


    θα βρεις την λύση στο πιάτο.

    αν και μετά από αυτό έχεις θέμα, να σου πω λίγα πράγματα παραπάνω



    Νικόλαος Καντζέλης
    BSc, MSc, MCAS, MCPD, MCITP, MCTS,MCP, MCT
    http://www.nksolutions.gr
    http://dotnetstories.wordpress.com
    http://weblogs.asp.net/dotnetstories
    http://forum.dotnetnuke.gr
  •  28-12-2009, 19:33 56099 σε απάντηση της 56096

    Απ: συνδεση gridview με formview

    χρησιμοποιησα τον εξής τρόπο.

    Protected Sub GridView3_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles GridView2.SelectedIndexChanged
            Dim txt1 As String = GridView3.SelectedRow.Cells(1).Text.ToString
    
            
            FormView1.ChangeMode(FormViewMode.Edit)
    
            Dim dbconn, sql, dbcomm, dbread
            dbconn = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;data source=" & Server.MapPath("~/database/temp.mdb"))
            dbconn.Open()
    
            sql = "select * from temp_82a where id='" + txt1 + "'"
            dbcomm = New OleDbCommand(sql, dbconn)
            dbread = dbcomm.ExecuteReader()
            dbread.Read()
            Dim tb1 As TextBox = FormView1.FindControl("ID_KATOXOUTextBox")
            tb1.Text = dbread(0).ToString()
            Dim tb2 As TextBox = FormView1.FindControl("eponymoTextBox")
            tb2.Text = dbread(1).ToString()
            Dim tb3 As TextBox = FormView1.FindControl("onomaTextBox")
            tb3.Text = dbread(2).ToString()
            Dim tb4 As TextBox = FormView1.FindControl("eponymo_patrosTextBox")
            tb4.Text = dbread(3).ToString()
            Dim tb5 As TextBox = FormView1.FindControl("onoma_patrosTextBox")
            tb5.Text = dbread(4).ToString()
            κλπκλπκλπ
            dbread.Close()
            dbconn.Close()
            
        End Sub

    και επίσης

    Protected Sub formview1_itemupdated(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.FormViewUpdatedEventArgs)
            FormView1.ChangeMode(FormViewMode.Insert)
    
        End Sub
    όταν ομως πάω να κάνω update χάνει 2 πεδία από την εγγραφή.Τα 2 πεδία που χάνει τα έχω θέσει read-only στο edititemtemplate του formview.
    κάποια βοήθεια?
  •  28-12-2009, 21:20 56100 σε απάντηση της 56099

    Απ: συνδεση gridview με formview


    επίσης η access datasource που χρησιμποιεί η βάση είναι(εκεί νομίζω βρίσκεται και το πρόβλημα):
    <asp:AccessDataSource ID="currentneoi" runat="server" DataFile="~/database/temp.mdb"
                    DeleteCommand="DELETE FROM [temp_nowa] WHERE [count] = ?" InsertCommand="INSERT INTO [temp_nowa] ([ID_KATOXOU], [eponymo], [onoma], [eponymo_patros], [onoma_patros], [eponymo_mhtros], [onoma_mhtros], [eponymo_syzhgou], [onoma_syzhgou], [at], [dieythinsi], [tilefono], [pososto], [oikopedo], [id_symvolaiou], [ar_symvolaiou], [etos_symvolaiou], [symvolaiografos], [perioxi], [tomos], [ar_tomou], [psili], [epikarpia]) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"
                     SelectCommand="SELECT * FROM [temp_nowa]" UpdateCommand="UPDATE [temp_nowa] SET [ID_KATOXOU] = ?, [eponymo] = ?, [onoma] = ?, [eponymo_patros] = ?, [onoma_patros] = ?, [eponymo_mhtros] = ?, [onoma_mhtros] = ?, [eponymo_syzhgou] = ?, [onoma_syzhgou] = ?, [at] = ?, [dieythinsi] = ?, [tilefono] = ?, [pososto] = ?, [oikopedo] = ?, [id_symvolaiou] = ?, [ar_symvolaiou] = ?, [etos_symvolaiou] = ?, [symvolaiografos] = ?, [perioxi] = ?, [tomos] = ?, [ar_tomou] = ?, [psili] = ?, [epikarpia] = ? WHERE [count] = ?" >
                    <DeleteParameters>
                        <asp:Parameter Name="count" Type="Int32" />
                    </DeleteParameters>
                    <UpdateParameters>
                        <asp:Parameter Name="ID_KATOXOU" Type="String" />
                        <asp:Parameter Name="eponymo" Type="String" />
                        <asp:Parameter Name="onoma" Type="String" />
                        <asp:Parameter Name="eponymo_patros" Type="String" />
                        <asp:Parameter Name="onoma_patros" Type="String" />
                        <asp:Parameter Name="eponymo_mhtros" Type="String" />
                        <asp:Parameter Name="onoma_mhtros" Type="String" />
                        <asp:Parameter Name="eponymo_syzhgou" Type="String" />
                        <asp:Parameter Name="onoma_syzhgou" Type="String" />
                        <asp:Parameter Name="at" Type="String" />
                        <asp:Parameter Name="dieythinsi" Type="String" />
                        <asp:Parameter Name="tilefono" Type="String" />
                        <asp:Parameter Name="pososto" Type="String" />
                        <asp:Parameter Name="oikopedo" Type="String" />
                        <asp:Parameter Name="id_symvolaiou" Type="String" />
                        <asp:Parameter Name="ar_symvolaiou" Type="String" />
                        <asp:Parameter Name="etos_symvolaiou" Type="String" />
                        <asp:Parameter Name="symvolaiografos" Type="String" />
                        <asp:Parameter Name="perioxi" Type="String" />
                        <asp:Parameter Name="tomos" Type="String" />
                        <asp:Parameter Name="ar_tomou" Type="String" />
                        <asp:Parameter Name="psili" Type="Boolean" />
                        <asp:Parameter Name="epikarpia" Type="Boolean" />
                        <asp:Parameter Name="count" Type="Int32" />
                    </UpdateParameters>
                    <InsertParameters>
                        <asp:Parameter Name="ID_KATOXOU" Type="String" />
                        <asp:Parameter Name="eponymo" Type="String" />
                        <asp:Parameter Name="onoma" Type="String" />
                        <asp:Parameter Name="eponymo_patros" Type="String" />
                        <asp:Parameter Name="onoma_patros" Type="String" />
                        <asp:Parameter Name="eponymo_mhtros" Type="String" />
                        <asp:Parameter Name="onoma_mhtros" Type="String" />
                        <asp:Parameter Name="eponymo_syzhgou" Type="String" />
                        <asp:Parameter Name="onoma_syzhgou" Type="String" />
                        <asp:Parameter Name="at" Type="String" />
                        <asp:Parameter Name="dieythinsi" Type="String" />
                        <asp:Parameter Name="tilefono" Type="String" />
                        <asp:Parameter Name="pososto" Type="String" />
                        <asp:Parameter Name="oikopedo" Type="String" />
                        <asp:Parameter Name="id_symvolaiou" Type="String" />
                        <asp:Parameter Name="ar_symvolaiou" Type="String" />
                        <asp:Parameter Name="etos_symvolaiou" Type="String" />
                        <asp:Parameter Name="symvolaiografos" Type="String" />
                        <asp:Parameter Name="perioxi" Type="String" />
                        <asp:Parameter Name="tomos" Type="String" />
                        <asp:Parameter Name="ar_tomou" Type="String" />
                        <asp:Parameter Name="psili" Type="Boolean" />
                        <asp:Parameter Name="epikarpia" Type="Boolean" />
                         
                         
                    </InsertParameters>
                </asp:AccessDataSource>
    Τέλος μόλις παρατήρησα πως κάθε φορά που κάνω πρώτη φορά σελεκτ διαλέγει πρώτα την πρώτη εγγραφή του gridview και μετα πρέπει να ξανακάνω κλικ για να διαλέξει τη σωστή.
  •  30-12-2009, 19:36 56125 σε απάντηση της 56091

    Απ: συνδεση gridview με formview

    Συνημμένα: MasterDetailExmpl.zip

    Ουσιαστικά θέλεις να φτιάξεις ένα Master - Detail που το detail θα κάνει edit τα δεδομένα του master. Δεν ξέρω γιατί δε θέλεις να κάνεις editing πάνω στο gridview, αλλά αντί για formview χρησιμοποίησε καλύτερα detailsview. Το DetailsView διαθέτει DefaultMode attribute το οποίο μπορεί να λάβει την τιμή "Edit". Κατά την ταπεινή μου άποψη μην χρησιμοποιείς code behind για πράγματα που μπορείς να κάνεις με markup. Στο δεύτερο AccessDataSource μπορείς να περάσεις την επιλεγμένη εγγραφή από το gridview μέσω ενός control parameter. Η όλη διαδικασία γίνεται πολύ εύκολα, με wizard, και το μόνο που απομένει είναι να "καθαρίσεις" τον κώδικα όπου αυτό χρειάζεται.

    Ένα πρόβλημα που πρέπει να αντιμετωπίσεις είναι ο συγχρονισμός των τιμών των πεδίων στο gridview όταν κάνεις update μιας εγγραφής στο detailsview. Μπορείς να το λύσεις προγραμματιστικά από το Updated event του δεύτερου AccessDataSource control. Σου παραθέτω παράδειγμα κώδικα, καθώς και το αρχείο του solution ως συνημμένο.

    Τέλος, αν οι εγγραφές είναι πολλές, θα αντιμετωπίσεις πρόβλημα με το paging, τη στιγμή που αυτό γίνεται στο contol (gridview). Καλόν είναι να μη φορτώνεις όλες τις εγγραφές μαζί, αλλά ένα υποσύνολό τους κάθε φορά.

    Ελπίζω να βοήθησα.

    PS: Ο πίνακας Customers προέρχεται από τον αντίστοιχο πίνακα της NorthWind database για Access.

     

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="MasterDetailExmpl._Default" %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <script runat="server" type="text/C#">
        
        protected void AccessDataSource2_Updated(object sender, SqlDataSourceStatusEventArgs e)
        {
            if (e.Exception != null)
            {
                lblError.Text = e.Exception.Message;
                e.ExceptionHandled = true;
            }
            else
            {
                lblError.Text = "";
                GridView1.SelectedRow.Cells[2].Text = ((TextBox)DetailsView1.Rows[1].Cells[1].Controls[0]).Text;
                GridView1.SelectedRow.Cells[3].Text = ((TextBox)DetailsView1.Rows[2].Cells[1].Controls[0]).Text;
                GridView1.SelectedRow.Cells[4].Text = ((TextBox)DetailsView1.Rows[3].Cells[1].Controls[0]).Text;
            }
        }
    
    </script>
    
    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head id="Head1" runat="server">
        <style type="text/css">
            .content
            {
                margin:auto;
                width:800px;
                font-size:0.9em;
            }
            .column
            {
                float:left;
                width:375px;
                margin-right:20px;
            }
            .selectedItem td
            {
            	color:red;
            }
        </style>
        
        <title>Master detail example</title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div class="content">
            <div class="column">
                <asp:GridView ID="GridView1" runat="server" AllowPaging="True" 
                    AutoGenerateColumns="False" DataKeyNames="CustomerID" 
                    DataSourceID="AccessDataSource1" SelectedRowStyle-CssClass="selectedItem" >
                    <Columns>
                        <asp:CommandField ShowSelectButton="True" />
                        <asp:BoundField DataField="CustomerID" HeaderText="ID" ReadOnly="True" 
                            SortExpression="CustomerID" />
                        <asp:BoundField DataField="CompanyName" HeaderText="Company" 
                            SortExpression="CompanyName" />
                        <asp:BoundField DataField="ContactName" HeaderText="Contact" 
                            SortExpression="ContactName" />
                        <asp:BoundField DataField="ContactTitle" HeaderText="Title" 
                            SortExpression="ContactTitle" />
                    </Columns>
                </asp:GridView>
            </div>
            
            <div class="column">
                </asp:Label ID="lblError" runat="server">
                <asp:DetailsView ID="DetailsView1" runat="server" DefaultMode="Edit"
                    AutoGenerateRows="False" DataKeyNames="CustomerID" AutoGenerateEditButton="True"
                    DataSourceID="AccessDataSource2">
                    <Fields>
                        <asp:BoundField DataField="CustomerID" HeaderText="ID" ReadOnly="True" 
                            SortExpression="CustomerID" />
                        <asp:BoundField DataField="CompanyName" HeaderText="Company" 
                            SortExpression="CompanyName" />
                        <asp:BoundField DataField="ContactName" HeaderText="Contact" 
                            SortExpression="ContactName" />
                        <asp:BoundField DataField="ContactTitle" HeaderText="Title" 
                            SortExpression="ContactTitle" />
                        <asp:BoundField DataField="Address" HeaderText="Address" 
                            SortExpression="Address" />
                        <asp:BoundField DataField="City" HeaderText="City" SortExpression="City" />
                        <asp:BoundField DataField="Region" HeaderText="Region" 
                            SortExpression="Region" />
                        <asp:BoundField DataField="PostalCode" HeaderText="PostalCode" 
                            SortExpression="PostalCode" />
                        <asp:BoundField DataField="Country" HeaderText="Country" 
                            SortExpression="Country" />
                        <asp:BoundField DataField="Phone" HeaderText="Phone" SortExpression="Phone" />
                        <asp:BoundField DataField="Fax" HeaderText="Fax" SortExpression="Fax" />
                    </Fields>
                </asp:DetailsView>
            </div>
        
            <asp:AccessDataSource ID="AccessDataSource1" runat="server" DataFile="~/App_Data/Customers.mdb" 
                SelectCommand="SELECT CustomerID, CompanyName, ContactName, ContactTitle FROM [Customers]">
            </asp:AccessDataSource>
        
            <asp:AccessDataSource ID="AccessDataSource2" runat="server" DataFile="~/App_Data/Customers.mdb" 
                SelectCommand="SELECT * FROM [Customers] WHERE ([CustomerID] = ?)" 
                onupdated="AccessDataSource2_Updated" 
                UpdateCommand="UPDATE [Customers] SET [CompanyName] = ?, [ContactName] = ?, [ContactTitle] = ?, [Address] = ?, [City] = ?, [Region] = ?, [PostalCode] = ?, [Country] = ?, [Phone] = ?, [Fax] = ? WHERE [CustomerID] = ?">
                <SelectParameters>
                    <asp:ControlParameter ControlID="GridView1" Name="CustomerID" 
                        PropertyName="SelectedValue" Type="String" />
                </SelectParameters>
                <UpdateParameters>
                    <asp:Parameter Name="CustomerID" Type="String" />
                    <asp:Parameter Name="CompanyName" Type="String" />
                    <asp:Parameter Name="ContactName" Type="String" />
                    <asp:Parameter Name="ContactTitle" Type="String" />
                    <asp:Parameter Name="Address" Type="String" />
                    <asp:Parameter Name="City" Type="String" />
                    <asp:Parameter Name="Region" Type="String" />
                    <asp:Parameter Name="PostalCode" Type="String" />
                    <asp:Parameter Name="Country" Type="String" />
                    <asp:Parameter Name="Phone" Type="String" />
                    <asp:Parameter Name="Fax" Type="String" />
                </UpdateParameters>
            </asp:AccessDataSource>
        
        </div>
        </form>
    </body>
    </html>

     


    Ακόμα κι ένας άνθρωπος μπορεί ν' αλλάξει τον κόσμο. Μη θέλεις να κυβερνήσεις. Απλά δείξε το μονοπάτι κι ο κόσμος θ' ακολουθήσει!!
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems