Avatar billede drevi Nybegynder
19. december 2003 - 14:34 Der er 4 kommentarer og
1 løsning

Skjul knapper i DataGrid

jeg forsøger at lave et nyheds modul hvor knapperne edit og slet kun er synlige for en siteadmin(en bruger af siden der er logget ind) det er derfor bygget op i et DataGrid for at udnytte edit og delete funktionen af disse. Problemmet er jeg får denne fejl:

Metoden 'Public Sub ctlBruger(sender As Object, e As System.Web.UI.WebControls.DataGridCommandEventArgs)' har ikke samme signatur som stedfortræderen 'Delegate Sub DataGridItemEventHandler(sender As Object, e As System.Web.UI.WebControls.DataGridItemEventArgs)'.

mit grid:

<asp:DataGrid ID="dgNyheder" Border="0" AutoGenerateColumns="false" OnItemDataBound="ctlBruger" runat="server" >
    <columns>
    <asp:TemplateColumn>
    <itemtemplate>
        <TABLE Width="450" border="1" class="modul" align="center">
        <TR><TD class="textbox" width="70%">
                <B> Nyhed : </B><%# DataBinder.Eval(Container.DataItem, "Nyhed_Overskrift") %>
            </TD><TD >
                <B> Dato : </B><%# formatDateTime(DataBinder.Eval(Container.DataItem, "Nyhed_Dato") , 2) %>
            </TD>           
        </TR>
        <TR><TD colspan=2 class=textbox>
                <%# DataBinder.Eval(Container.DataItem, "Nyhed_Indhold") %>
            </TD>
        </TR>
        <TR><TD class=textbox width="70%">
                <B> Skrevet af </B><%# DataBinder.Eval(Container.DataItem, "Navn")  %>
            </TD><td width="150" align="right">
                <asp:Button CssClass="knap" ID="btnedit" runat="server" CommandName="btnEditnyhed" Text="Rediger"/>
                <asp:Button CssClass="knap" runat="server" CommandName="btnSletnyhed" Text="Slet"/>
            </td>
        </TR>
        </TABLE><br>
        </itemtemplate>
        <edititemtemplate>
        <TABLE Width="450" border="1" class="modul" align="center">
        <TR><TD width="300" class="textbox">
                <B> Nyhed : </B><asp:TextBox ID="editoverskrift" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "Nyhed_Overskrift") %>' CssClass="textbox" />
            </TD><TD width="150">
                <B> Dato : </B><%# formatDateTime(DataBinder.Eval(Container.DataItem, "Nyhed_Dato") , 2) %>
            </TD>
        </TR>
        <TR><TD colspan=2 class=textbox>
                <asp:TextBox ID="editindhold" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "Nyhed_Indhold") %> ' CssClass="textbox" />
            </TD>
        </TR>
        <TR><TD class=textbox width="300">
                <B> Skrevet af </B><%# DataBinder.Eval(Container.DataItem, "Navn")  %>
            </TD><td width="150" align="right">
                <asp:Button CssClass="knap" runat="server" ID="btnEditnyhed" Text="Opdatere"/>
                <asp:Button CssClass="knap" runat="server" ID="btnSletnyhed" Text="Annulere"/>
            </td>
        </TR>
        </TABLE><br>
        </edititemtemplate>
        </asp:TemplateColumn></columns>
</asp:DataGrid>

min kontrol metode:
sub ctlBruger(sender As Object, e as  DataGridCommandEventArgs)
       
  Dim iEditIndex As Integer = e.Item.ItemIndex
  if NOT (Session("Rang") >= 10 ) then
    CType(Me.dgNyheder.Items(iEditIndex).FindControl("btnedit"), Button).visible = false
  end if
  dgNyheder.DataSource = loadNyheder
  dgNyheder.Databind()
       
end sub

jeg benytter VB, jeg har ikke benyttet datagrid's før men edit og delete virker fint jeg skal bare have skjult knapperne for folk som skal være uden indflydelse,
Avatar billede mufoxe Nybegynder
19. december 2003 - 15:31 #1
Du kan sætte knappens Visible property i OnDataBind eventen på DataGrid'et.
Avatar billede mufoxe Nybegynder
19. december 2003 - 15:32 #2
Hvilken event har du koblet ctlBruger op på ?
Avatar billede drevi Nybegynder
19. december 2003 - 17:06 #3
jeg sætter den her i datagrid Taget OnItemDataBound="ctlBruger"
jeg er ikke helt med på hvad du mener jeg tror nemlig jeg har gjort det du siger der uden at fejlen ændrede sig. Jeg har den opfattelse, at man kan henvise til en metode der udføreres for den specifikke row der er ved at gennem løbe datagrid'et og på den måde sætte min knap i den givende row til visible false jeg skal nemlig bruge sener at det kun er nogle rows der for knapperne på også men en ting af gangen.
Avatar billede ha9953 Nybegynder
22. december 2003 - 14:03 #4
Jo tak - giv mig så de point ;-)
Avatar billede drevi Nybegynder
22. december 2003 - 14:13 #5
lige får at opsummere løsningen fra ha9953 :

datagridet
<asp:DataGrid ID="dgNyheder" Border="0" OnItemDataBound="ctlBruger" runat="server">

og metoden:
sub ctlBruger(sender As Object, e As System.Web.UI.WebControls.DataGridItemEventArgs)
  If e.Item.ItemType = ListItemType.Item Or e.Item.ItemType = ListItemType.AlternatingItem Then
    *kontrolkode
  end if
end sub
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