Avatar billede TV47 Mester
21. april 2021 - 21:58 Der er 3 kommentarer og
1 løsning

Gridview og findcontrol

Hejsa.

Jeg har følgende kode i en Gridview Rowcommand:

if (e.CommandName.Equals("Close"))
                {                                     
                    int index = Convert.ToInt32(e.CommandArgument);
                    GridViewRow gvRow = GridView1.Rows[index];
                    int rowIndex = index;

                    (GridView1.Rows[rowIndex].FindControl("txtStart") as TextBox).Text.Trim();


Jeg får følgende fejl:
System.NullReferenceException: 'Objektreferencen er ikke indstillet til en forekomst af et objekt.'

(... as System.Web.UI.WebControls.TextBox) returned null.

Hvad gør jeg galt, sig til hvis I skal bruge mere af koden?
Avatar billede arne_v Ekspert
22. april 2021 - 01:41 #1
Et eller andet er null.

Du skal finde ud af hvad det er.

Mit gæt er at det er:

GridView1.Rows[rowIndex].FindControl("txtStart") as TextBox
Avatar billede TV47 Mester
22. april 2021 - 07:18 #2
<Columns>           
            <asp:Templatefield HeaderText="Kode" ControlStyle-Width="100" >
                    <ItemTemplate>
                        <asp:Label Text='<%# Eval("Kode") %>' runat="server"/>
                    </ItemTemplate>                   
                    <EditItemTemplate>
                        <asp:TextBox ID="txtKode" Text= '<%# Eval("Kode") %>' runat="server" />                           
                    </EditItemTemplate>
                    <FooterTemplate>
                        <asp:TextBox ID="txtKodeFooter" ControlStyle-Width="100" runat="server" />
                    </FooterTemplate>                     
            </asp:Templatefield>
            <asp:Templatefield HeaderText="Start" ControlStyle-Width="200">
                    <ItemTemplate>
                        <asp:Label Text='<%# Eval("Start", "{0:d}") %>' runat="server"/>
                    </ItemTemplate>                   
                    <EditItemTemplate>
                        <asp:TextBox ID="txtStart" Text= '<%# Eval("Start", "{0:d}") %>' runat="server" />                           
                    </EditItemTemplate>
                    <FooterTemplate>
                        <asp:TextBox ID="txtStartFooter" ControlStyle-Width="200" runat="server" />
                    </FooterTemplate>                     
            </asp:Templatefield>
            <asp:Templatefield>
                    <ItemTemplate>
                        <asp:ImageButton ImageUrl="/Images/Edit.png" runat="server" CommandName="Edit" ToolTip="Rediger" Width="20px" Height="20px" />
                        <asp:ImageButton ImageUrl="/Images/Delete.png" runat="server" CommandName="Delete" ToolTip="Slet" Width="20px" Height="20px" />
                        <asp:ImageButton ImageUrl="/Images/Delete.png" runat="server" CommandName="Open" ToolTip="Åbn" Width="20px" Height="20px" />
                        <asp:ImageButton Id="Close" ImageUrl="/Images/Delete.png" runat="server" CommandArgument='<%# ((GridViewRow) Container).RowIndex %>' CommandName="Close" ToolTip="Luk" Width="20px" Height="20px" />
                    </ItemTemplate>
                    <EditItemTemplate>
                        <asp:ImageButton ImageUrl="/Images/Save.png" runat="server" CommandName="Update" ToolTip="Gem" Width="20px" Height="20px" />
                        <asp:ImageButton ImageUrl="/Images/Cancel.png" runat="server" CommandName="Cancel" ToolTip="Fortryd" Width="20px" Height="20px" />                     
                    </EditItemTemplate>
                    <FooterTemplate>
                        <asp:ImageButton ImageUrl="/Images/Add.png" runat="server" CommandName="Tilføj" ToolTip="Tilføj" Width="20px" Height="20px" />                     
                    </FooterTemplate>
            </asp:Templatefield>                               
        </Columns>
Avatar billede TV47 Mester
22. april 2021 - 07:26 #3
Min kontrol ser ud som ovenfor.

Jeg havde oprindeligt kun noget med insert, edit og delete.

Men nu har jeg lavet et par ekstra knapper (Open og Close), hvor der skal ske noget.

Jeg regnede så med at jeg kunne trykke på den linje jeg ville i mit gridview og så kunne jeg få  fat i værdierne i forskellige kolonner i de valgte linje.

Det indeks jeg har lavet, hvor koden var med fra start i denne sag, har styr på hvilke indeks, jeg selecter. De tre records jeg har har således indeks 0, 1 og 2 og jeg havde så regnet med at kunne komme i kontakt med værdierne på den record, jeg selecter.

Du har ret i Arne, at jeg nok forsøger på noget jeg ikke kan i rowcommand som giver mig return værdien null og det var den findcontrol, du nævner som er problemet. Men den findcontrol kommando virker vist kun i edit mode.

Men hvad kan jeg gøre for at opnå det jeg gerne vil.... nogen ideer?
Avatar billede TV47 Mester
23. april 2021 - 19:03 #4
Ah, hvis jeg får et ID defineret i min itemTemplate, der kan henvises til.
Og så iøvrigt i min FindControl skriver as Label istedet.
Så virker det.
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

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





Premium
Sikkerhedsekspert: Derfor har Colonial været nødt til at betale hackere ransomware på 30 millioner kroner - vil sagtens kunne ske i Danmark
Interview: Hvorfor har mægtige Colonial Pipeline valgt at betale ransomware til hackere trods anbefalinger fra myndigheder og sikkerhedsmiljøet? "Det er ikke helt sort og hvidt," siger sikkerheds-ekspert Leif Jensen fra Eset.
Computerworld
Nye informationer om det største iPhone-hack nogensinde ser dagens lys: 128 millioner brugere blev ramt
Hidtil hemmeligholdte detaljer om verdens største iPhone-hack er kommet frem under retssagen mellem Apple og Epic Games. 128 millioner brugere blev ramt, og mere end 4.000 apps blev inficeret. Se detaljerne her.
CIO
Har du rost din mellemleder i dag? Snart er de uddøde - og det er et tab
Computerworld mener: Mellemledere lever livet farligt: Topledelsen får konstant ideer med skiftende hold i virkeligheden, og moden går mod flade agile organisationer. Men mellemlederen er en overset hverdagens helt med et kæmpe ansvar. Her er min hyldest til den ofte latterliggjorte mellemleder.
Job & Karriere
Eva Berneke stopper som topchef i KMD og flytter til Paris: Her er KMD's nye topchef
Efter syv år på posten som topchef for KMD forlader Eva Berneke selskabet. Nu flytter hun med familien til Paris, hvor hun vil fortsætte sit bestyrelsesarbejde. KMD har allerede afløser på plads.
White paper
Hvordan ser kundetilfredshed ud i det moderne kontaktcenter?
Det er simpelt: Dine kunder får de svar, som de har brug for, gennem deres fortrukne kanal, med forbløffende hastighed. Gå ikke glip af denne e-bog, hvor vi gennemgår alt hvad du behøver at vide omkring Cisco Webex Contact Center.