Avatar billede mrpalermo Nybegynder
28. februar 2006 - 14:41 Der er 10 kommentarer og
1 løsning

Slette i et GridView med ekstern klasse

<asp:GridView ID="GridView1" DataKeyNames="AllowEdit, Obligated, ProspectContentId" runat="server" DataSourceID="ObjectDataSource1" AutoGenerateColumns="False">
        <Columns>
            <asp:CommandField ShowEditButton="True" ButtonType="Image" CancelImageUrl="~/common/images/undo.png" DeleteImageUrl="~/common/images/document_delete.png" EditImageUrl="~/common/images/document_edit.png" UpdateImageUrl="~/common/images/disk_blue_ok.png" >
                <ItemStyle HorizontalAlign="Left" VerticalAlign="Top" />
            </asp:CommandField>
            <asp:CommandField ShowDeleteButton="True" DeleteImageUrl="~/common/images/document_delete.png" ButtonType="Image" >
                <ItemStyle HorizontalAlign="Left" VerticalAlign="Top" />
            </asp:CommandField>
            <asp:BoundField DataField="AllowEdit" ReadOnly="True" ShowHeader="False" Visible="False" />
            <asp:TemplateField>
                <ItemTemplate>
                  <asp:Label id="ItemName" Runat="Server"
                    Text='<%# TextParser(Eval("Content")) %>'/>
                </ItemTemplate>
                <EditItemTemplate>
                  {Kode fjernet}
                </EditItemTemplate>
                <ItemStyle HorizontalAlign="Left" VerticalAlign="Top" Width="100%" />
              </asp:TemplateField>

        </Columns>
    </asp:GridView>
    <asp:ObjectDataSource ID="ObjectDataSource1" runat="server" SelectMethod="GetProspectContentByProspectId2"
        TypeName="DemosenderDataLayer"  DeleteMethod="DeleteProspectContent" UpdateMethod="UpdateProspectContent">

        <SelectParameters>
            <asp:QueryStringParameter Name="ProspectId" QueryStringField="ProspectId" Type="Int16" />
        </SelectParameters>
        <DeleteParameters>
            <asp:Parameter Name="ProspectContentId" Type="Int16"/>
        </DeleteParameters>
        <UpdateParameters>
            <asp:Parameter Name="ProspectContentId" Type="Int16" />
            <asp:Parameter Name="Content" Type="String" />
        </UpdateParameters>
       
    </asp:ObjectDataSource>


Som det kan ses, benytter jeg en ekstern klasse (DemosenderDataLayer) til at bl.a. hente data ind i gridview´et (GetProspectContentByProspectId2)

Det er også meningen at jeg vil benytte den eksterne klasse til at slette fra databasen ved hjælp af (DeleteProspectContent) funktionen.

Funktionen tager 1 parameter (ProspectContentId), som jeg har defineret i <DeleteParamenter> sektionen

ProspectContentId er et skjult felt i gridviewet, derfor bruger jeg (DataKeyNames="AllowEdit, Obligated, ProspectContentId").

Min eksterne klasse er defineret på følgende måde:

Public Sub DeleteProspectContent(ByVal ProspectContentId As Int16)
    bla bla.
end sub

Hvordan får jeg overført min variabel ProspectContentId til min eksterne klasse? Jeg kan ikke konstatere, at variablen kommer med over.

Jeg får følgende fejl:
Exception Details: System.InvalidOperationException: ObjectDataSource 'ObjectDataSource1' could not find a non-generic method 'DeleteProspectContent' that has parameters: ProspectContentId, AllowEdit, Obligated.

I 'ObjectDataSource1' har jeg "peget" på min funktion (DeleteProspectContent)


Hvad gør jeg galt? Skal jeg lave en handler (AddHandler GridView1.RowDeleting, AddressOf GridView1_RowDelete) i stedet? og i så fald, hvordan fanger jeg ProspectContentId værdien?
Avatar billede dr_chaos Nybegynder
28. februar 2006 - 14:46 #1
prøv med
<DeleteParameters>
          <asp:ControlParameter ControlID="GridView1" PropertyName="SelectedValue[2]" Name="ProspectContentId" Type="Int16"/>
        </DeleteParameters>
Avatar billede mrpalermo Nybegynder
28. februar 2006 - 14:51 #2
Får samme fejl.

could not find a non-generic method 'DeleteProspectContent' that has parameters: ProspectContentId, AllowEdit, Obligated.

Det er lige som om at den forventer at min

Public Sub DeleteProspectContent(ByVal ProspectContentId As Int16)

skal indeholde 2 ekstra variabler for overhovedet at kunne afvikles.

Jeg prøver lige at ændre DeleteProspectContent til:

Public Sub DeleteProspectContent(ByVal ProspectContentId As Int16, ByVal aa as boolean, byVal bb as Boolean)
Avatar billede dr_chaos Nybegynder
28. februar 2006 - 14:55 #3
problemet kommer af at du har flere datakeynames.
Avatar billede dr_chaos Nybegynder
28. februar 2006 - 14:56 #4
hvis du laver den metode du nævner til sidst kan du fjerne:
<DeleteParameters>
            <asp:Parameter Name="ProspectContentId" Type="Int16"/>
        </DeleteParameters>
Avatar billede snepnet Nybegynder
28. februar 2006 - 15:01 #5
hvorfor har du flere datakeynames ... umiddelbart ser det da ud til at det kun er ProspectContentId der er relevant der.
mvh
Avatar billede mrpalermo Nybegynder
28. februar 2006 - 15:06 #6
Danm, det virker med følgende:
Public Sub DeleteProspectContent(ByVal ProspectContentId As Int16, ByVal AllowEdit As Boolean, ByVal Obligated As Boolean)

Jeg bruger AllowEdit og Obligated til følgende:
Private Sub GridView1_RowDataBound(ByVal sender As Object, ByVal e As GridViewRowEventArgs)
        If e.Row.RowType = DataControlRowType.DataRow Then
            If GridView1.DataKeys(e.Row.RowIndex)("AllowEdit") = False Then
                Try
                    'Disable the Edit button if conditions are right
                    e.Row.Cells(0).Enabled = False
                    Dim RowButton As ImageButton = CType(e.Row.Cells(0).Controls(0), ImageButton)
                    RowButton.ImageUrl = "~/common/images/white.gif"
                Catch
                End Try
            End If

            If GridView1.DataKeys(e.Row.RowIndex)("Obligated") = True Then
                Try
                    'Disable the Delete button if conditions are right
                    e.Row.Cells(1).Enabled = False
                    Dim RowButton As ImageButton = CType(e.Row.Cells(1).Controls(0), ImageButton)
                    RowButton.ImageUrl = "~/common/images/white.gif"
                Catch
                End Try
            End If

        End If
    End Sub
Avatar billede snepnet Nybegynder
28. februar 2006 - 15:10 #7
fair nok :o)
mvh
Avatar billede mrpalermo Nybegynder
28. februar 2006 - 15:13 #8
Smid et svar, hvis i vil have nogle points
Avatar billede dr_chaos Nybegynder
28. februar 2006 - 15:14 #9
svar :)
Avatar billede snepnet Nybegynder
28. februar 2006 - 15:21 #10
al magt (æhh.. points) til chaos ;o)
mvh
Avatar billede mrpalermo Nybegynder
28. februar 2006 - 15:33 #11
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester