Toon posts:

Datagrid ASP.net Onedit veranderd knoppen kan niet edit

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallo,

Ik ben bezig met het maken van een editable tabel in Asp.net VB.

Nu heb ik het volgende probleem. Na het lezen van wat tutorials is het me gelukt om de tabel in te lezen en de knoppen toe te voegen.

Als ik nu op wijzige klik veranderd de layout ook en de knoppen Opslaan en annuleren worden zichtbaar.

Echter Ik kan nu nog steeds niets aanpassen de tabel krijgt GEEN Tekstvelden. Weet iemand misschien hou dit komt?

Ik gebruik wel i.p.v SQLConnection een OleDBconnection aangezien ik gebruik maak van een Access Database en geen SQL server heb. Zou het probleem hierin kunnen zitten?

Ik gebruik de volgende code
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
<%@ Page Language="vb" Debug="true" %>
<%@ import Namespace="System.Data.OleDb" %>
<%@ import Namespace="System.Data" %>

<script runat="server">

    Private Sub Page_Load(Sender As Object, E As EventArgs)
           If Not Page.IsPostBack Then
               BindGrid()
           End If
       End Sub

       Sub BindGrid()
         dim dbconn, sql, dbcomm, dbread
         dbconn=New OleDbConnection ("Provider=Microsoft.Jet.OLEDB.4.0; data source=" &server.MapPath("DataStore.mdb"))
         dcconn.open()
         sql = "SELECT * From TBL_GEGEVENS"
         dbcomm= New OleDbCommand(sql,dbconn)
         dbread=dbcomm.ExecuteReader()
         DataGrid1.DataSource= dbread
         DataGrid1.DataBind()
         dbconn.close()
     
    End Sub

       Private Sub DataGrid1_Edit(Sender As Object, E As DataGridCommandEventArgs)
        DataGrid1.EditItemIndex = e.Item.ItemIndex
        
        BindGrid()
    End Sub

       Private Sub DataGrid1_Cancel(Sender As Object, E As DataGridCommandEventArgs)
           DataGrid1.EditItemIndex = -1
           BindGrid()
       End Sub

</script>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <title>Untitled Document</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
<body>
    <form id="Form1" method="post" runat="server">
        <p>
            <asp:datagrid id="DataGrid1" DataKeyField="ID" runat="server" OnCancelCommand="DataGrid1_Cancel" OnEditCommand="DataGrid1_Edit" ForeColor="Black" GridLines="Vertical" CellPadding="3" BackColor="White" BorderWidth="1px" BorderStyle="Solid" BorderColor="#999999">
                <FooterStyle backcolor="#CCCCCC"></FooterStyle>
                <HeaderStyle font-bold="True" forecolor="White" backcolor="Black"></HeaderStyle>
                <PagerStyle horizontalalign="Center" forecolor="Black" backcolor="#999999"></PagerStyle>
                <SelectedItemStyle font-bold="True" forecolor="White" backcolor="#000099"></SelectedItemStyle>
                <AlternatingItemStyle backcolor="#CCCCCC"></AlternatingItemStyle>
                <Columns>
                    <asp:EditCommandColumn ButtonType="PushButton" UpdateText="Opslaan" CancelText="Annuleren" EditText="Wijzigen"></asp:EditCommandColumn>
                </Columns>
            </asp:datagrid>
        </p>
        <p>
            <asp:Label id="Message" runat="server" enableviewstate="False" forecolor="Red"></asp:Label>
        </p>
    </form>
</body>
</html>

  • whoami
  • Registratie: December 2000
  • Laatst online: 30-04 15:31
Verwijderd schreef op woensdag 21 september 2005 @ 10:10:


Ik gebruik wel i.p.v SQLConnection een OleDBconnection aangezien ik gebruik maak van een Access Database en geen SQL server heb. Zou het probleem hierin kunnen zitten?
Nee, waarom zou je dat denken ? De specifieke implementatie v. connectie doet er niet toe.

Heb je wel een edititem-template ?

https://fgheysels.github.io/


Verwijderd

Hier moet je nog meer aan toevoegen:

code:
1
2
3
<Columns>
        <asp:EditCommandColumn ButtonType="PushButton" UpdateText="Opslaan" CancelText="Annuleren" EditText="Wijzigen"></asp:EditCommandColumn>
</Columns>

Je krijgt nu waarschijnlijk alleen die button te zien. Je moet nog enkele kolommen toevoegen, van het type EditItemTemplate (zoals whoami ook zegt) en daarin de data toevoegen.

Verwijderd

Topicstarter
Dus eigenlijk moet er nog een template aangeroepen wordt die de browser verteld hoe de tekstvelden eruit moeten gaan zien?

Heeft iemand daar misschien een voorbeeld van gezien, want in de tutorials die ik heb gebruik kan ik dit niet vinden.

Daar voegen ze niets meer toe aan de tag editCommandColumn

Ik gebruik de voorbeelden op http://www.dotnetjunkies....webdataaccess.aspx#update

en die op de site van microsoft

heeft iemand misschien een beter link

  • whoami
  • Registratie: December 2000
  • Laatst online: 30-04 15:31
Als je op de edit knop klikt, dan wordt die row in edit-mode gezet. Dan wordt de EditItemTemplate voor die row getoond. Ik weet nu niet of er default zo'n edit-template gemaakt wordt, of als je die zelf moet specifieren. Het kan zijn dat er default al zo'n template is bij een datagrid.

klik

[ Voor 19% gewijzigd door whoami op 21-09-2005 10:46 ]

https://fgheysels.github.io/


Verwijderd

Zie hier

In de link die jij gebruikt, posten ze alleen de code om een kolom toe te voegen waarmee een button wordt getoond. Er wordt verder geen data getoond, dat zul je dus met de edititemtemplate moeten doen.

/Edit: te laat...

[ Voor 3% gewijzigd door Verwijderd op 21-09-2005 10:46 ]


  • cowgirl
  • Registratie: November 2000
  • Laatst online: 18-12-2025
Volgens de tutorial zou er inderdaad een default template moeten zijn met allemaal textboxen.
To allow rows to be edited, the DataGrid supports an integer EditItemIndex property, which indicates which row of the grid should be editable. When this property is set, the DataGrid renders the row at that index as text input boxes instead of simple labels.
Is het probleem niet heel simpel dat de data niet meer gebind wordt na een postback en er dus niets is om te updaten? Je hoeft de data niet opnieuw op te halen, maar volgens mij wel opnieuw binden aan de grid.

Verwijderd

Inderdaad, volgens mij moet deze IF-statement weg:

code:
1
2
3
If Not Page.IsPostBack Then
           BindGrid()
End If

..in PageLoad

  • cowgirl
  • Registratie: November 2000
  • Laatst online: 18-12-2025
Dat zal werken en dan kan je ook EnableViewState op je datagrid uitzetten. Maar als het goed is kan je ook alleen Datagrid1.DataBind() uit de functie halen en altijd uitvoeren (dus buiten de if-statement).

Verwijderd

Topicstarter
Het if statement weghalen in de page_load heeft geen resultaat!

Als ik het commando Datagrid1.Databind() voor het if statement zet zodat het bij een postback aangeroepen wordt blijft de pagina na postback geheel leeg!.

Ik heb nu de volgende code toegevoegd
[code]

<Columns>
blabla
<asp:TemplateColumn>
<edititemtemplate>
<asp:CheckBox text="test" runat server />
</asp:TemplateColumn>
</edititemtemplate>
</Columns>

Dit resulteert erin dat er een rij bijkomt als ie op edit staat en weggaat als ik editmode weer verlaat

Is het nu mogelijk om gewoon met de hand de table om te zetten naar textboxen dus iets van te zetten in bv de methode

Datagrid1.Column[0].type= "Texbox"


Of zeggen jullie kom even terug met beide voeten terug op aarde want nu ben je aardig aan het zweven.

[ Voor 8% gewijzigd door Verwijderd op 21-09-2005 11:33 ]


Verwijderd

Nee, dat gaat niet werken (volgens mij). Je was al aardig goed op weg:
code:
1
2
3
4
5
6
7
8
<Columns>
blabla
<asp:TemplateColumn>
<edititemtemplate>
<asp:Label text="test" runat server />
</asp:TemplateColumn>
</edititemtemplate>
</Columns>

Klaar :)

Data opvragen uit je database kan zo:

code:
1
text='<%# DataBinder.Eval (Container.DataItem,"data_field")%>'

[ Voor 31% gewijzigd door Verwijderd op 21-09-2005 11:36 ]


  • cowgirl
  • Registratie: November 2000
  • Laatst online: 18-12-2025
Ik heb nog eens m'n eerste projectje geopend en daar doe ik het op vergelijkbare wijze. Inderdaad alleen data ophalen en binden in de pageload indien geen postback. Het enige verschil is dat ik geen autogenerated columns gebruik. Als je een breakpoint zet in de functie DataGrid1_Edit, kom je daar dan wel?

  • Sensei_D
  • Registratie: Maart 2002
  • Laatst online: 23-04 10:34
Ik heb geen direct antwoord, maar wel een artikel:
http://aspnet.4guysfromrolla.com/articles/061505-1.aspx

Dit artikel gaat in op de datagrid waarbij ontzettend veel besproken wordt en ik weet bijna zeker dat jouw oplossing er ook in staat...

Suc6!

edit:
part 6 van het artikel zou ik maar es lezen als ik jouw was...

[ Voor 14% gewijzigd door Sensei_D op 21-09-2005 13:16 ]

sensei_d.fpv channel


Verwijderd

Topicstarter
Nu snap ik er echt niets meer van!

Ik denk mm dan maar even niet proberen de code zelf te type en gewoon standaar dreamweavercode gebruiken.

Dus wizard je gedraait dataset gemaakt, gekoppeld aan tabel, kolom toegevoegd.

Dit alles volgens de wizards en gewoon excat hetzelfde probleem. Tabel wordt weergegeven kan op edit klikken knoppen veranderen maar kan niet editen. Zou het het dan niet aan mijn webserver kunnen liggen.

Ik gebruik windows XP Pro met IIS


Iemand dat wel eens gehad?

[ Voor 4% gewijzigd door Verwijderd op 21-09-2005 13:05 ]


Verwijderd

Post de code eens die Dreamweaver genereert...

En als je er niets van snapt, kun je je beter eerst gaan verdiepen in dit probleem, zodat je wel zelf de code kunt typen.

Verwijderd

Topicstarter
Verwijderd schreef op woensdag 21 september 2005 @ 15:09:
Post de code eens die Dreamweaver genereert...

En als je er niets van snapt, kun je je beter eerst gaan verdiepen in dit probleem, zodat je wel zelf de code kunt typen.
Weet ik ben ik ook met je eens, het heeft geen zin de wizards van dreamweaver te gebruiken als je niet weet wat ze doen. Dan leer je het niet.

Heb het probleem nu ook al ver opgelost. ik heb de datagrid onzichtbaar gezet, en bij de columns
<asp:BoundColumn> gebruikt om ze zichtbaar te maken. Dit lijkt te werken.

Ik krijg nu als ik op edit klik ook direct textboxen met de juiste waardes erin. Alleen de afmetingen kloppen nog niet.

Zal vanavond anders de code toevoegen misschien dat ik het toch nog fout doe en straks met het wegschrijven na de databank problemen krijg.

Kan ze nu even niet van mijn laptop afhalen want daarop zit geen internet op het werk :-(

Alvast bedankt iedereen

Zoals gezegt nog even de code erbij
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
<%@ Page Language="vb" Debug="true" %>
<%@ import Namespace="System.Data.OleDb" %>
<%@ import Namespace="System.Data" %>
<script runat="server">

    Private Sub Page_Load(Sender As Object, E As EventArgs)

    if not Page.isPostBack then
               BindGrid()
               
               end if
 
       End Sub

       Sub BindGrid()
         dim dbconn, sql, dbcomm, dbread
         dbconn=New OleDbConnection ("Provider=Microsoft.Jet.OLEDB.4.0; data source=" &server.MapPath("DataStore.mdb"))
           dbconn.open()
         sql = "SELECT * From TBL_GEGEVENS"
         dbcomm= New OleDbCommand(sql,dbconn)
         dbread=dbcomm.ExecuteReader()
         DataGrid1.DataSource= dbread
         DataGrid1.DataBind()
         dbconn.close()

    End Sub

    Private Sub DataGrid1_Edit(Sender As Object, E As DataGridCommandEventArgs)
    message.text="Onedit"
        DataGrid1.EditItemIndex = e.Item.ItemIndex


           BindGrid()
    End Sub

       Private Sub DataGrid1_Cancel(Sender As Object, E As DataGridCommandEventArgs)
         message.text="geannulleerd"
           DataGrid1.EditItemIndex = -1
           BindGrid()
       End Sub



    private Sub DataGrid1_Update(Sender As Object, E As DataGridCommandEventArgs)


    message.text="opgeslagen"
    DataGrid1.EditItemIndex = -1
           BindGrid()
  
 
    end sub

</script>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <title>test</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
<body>
    <form id="Form1" method="post" runat="server">
        <p>
            <asp:Label id="Message" runat="server" enableviewstate="true" forecolor="Red" text="djkfsdkkgjhb"></asp:Label>
            <asp:datagrid id="DataGrid1" runat="server" DataMember="Table" enableviewstate="True" BorderColor="#999999" BorderStyle="Solid" BorderWidth="1px" BackColor="White" CellPadding="3" GridLines="Vertical" ForeColor="Black" OnEditCommand="DataGrid1_Edit" OnCancelCommand="DataGrid1_Cancel" OnUpdateCommand="DataGrid1_Update" DataKeyField="ID" AutoGenerateColumns="False">
                <FooterStyle backcolor="#CCCCCC"></FooterStyle>
                <HeaderStyle font-bold="True" forecolor="White" backcolor="Black"></HeaderStyle>
                <PagerStyle horizontalalign="Center" forecolor="Black" backcolor="#999999"></PagerStyle>
                <AlternatingItemStyle backcolor="#CCCCCC"></AlternatingItemStyle>
                <Columns>
                    
                    <asp:EditCommandColumn ButtonType="LinkButton" UpdateText="Opslaan" CancelText="Afbreken" EditText="Wijzige"></asp:EditCommandColumn>
                    <asp:BoundColumn DataField="ID" HeaderText="ID"></asp:BoundColumn>
                    <asp:BoundColumn DataField="Datum" HeaderText="Datum"></asp:BoundColumn>
                    <asp:BoundColumn DataField="Gap" HeaderText="Gap"></asp:BoundColumn>
                    <asp:BoundColumn DataField="Shift" HeaderText="Shift"></asp:BoundColumn>
                    <asp:BoundColumn DataField="Naam" HeaderText="Naam"></asp:BoundColumn>
                    <asp:BoundColumn DataField="Huidige Situatie" HeaderText="Huidige Situatie"></asp:BoundColumn>
                    <asp:BoundColumn DataField="Oplossing" HeaderText="Oplossing"></asp:BoundColumn>
                    <asp:BoundColumn DataField="Opmerking" HeaderText="Opmerking"></asp:BoundColumn>
                    <asp:BoundColumn DataField="Resp" HeaderText="Resp"></asp:BoundColumn>
                    <asp:BoundColumn DataField="Onderwerp" HeaderText="Onderwerp"></asp:BoundColumn>
                    <asp:BoundColumn DataField="Status" HeaderText="Status"></asp:BoundColumn>
                    <asp:BoundColumn DataField="Week1" HeaderText="Week1"></asp:BoundColumn>
                    <asp:BoundColumn DataField="Week6" HeaderText="Week6"></asp:BoundColumn>
                    <asp:BoundColumn DataField="Week12" HeaderText="Week12"></asp:BoundColumn>
                    
                    
                </Columns>
            </asp:datagrid>
        </p>
    </form>
</body>
</html>

[ Voor 69% gewijzigd door Verwijderd op 22-09-2005 10:13 ]

Pagina: 1