Avatar billede ihtezaz Praktikant
27. oktober 2004 - 01:06 Der er 7 kommentarer og
1 løsning

Redigere data i Datagrid, kun TextBox hvor data skal rettes

Hej
Jeg har en datagrid med op til 13 colonner, jeg har edit, cancel, update cmd på datagridet.
Den retter fint data i gridet.

Når jeg trykker edit, kommer det textboxes på alle colloner indenfor den valgte række, men idet jeg kun skal redigere i 3 ud af 13 colloner, ønsker jeg kun TextBox i disse 3 colloner og ikke i de resterende 10. Hvordan kan det løses ?

På forhånd tak.
Avatar billede snepnet Nybegynder
27. oktober 2004 - 08:13 #1
hej ihtezaz :o)

den nemmeste måde er at du definerer en template griddet. du kan lige se et lille eksempel her :

<asp:DataGrid id="grid" runat="server" AutoGenerateColumns="False">
    <Columns>
        <asp:TemplateColumn HeaderText="Header">
            <ItemTemplate>
                <asp:Label id=Label1 runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.FldString") %>'>
                </asp:Label>
            </ItemTemplate>
            <EditItemTemplate>
                <asp:TextBox id=TextBox1 runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.FldString") %>'>
                </asp:TextBox>
            </EditItemTemplate>
        </asp:TemplateColumn>
    </Columns>
</asp:DataGrid>

oventstående sætter bare en label ind for hvert item, men hvis det aktuelle item er i "editmode", indsættes en tekstboks.
det er sådan set på den måde griddet virker på som standard.... men når du laver templaten selv har du så mulighed for at angive at det eksempelvis kun er kolonne 2,5,9 der skal rendere tekstbokse.

mvh
Avatar billede ihtezaz Praktikant
27. oktober 2004 - 09:03 #2
Meget fint snepnet, jeg vender tilbage snart, har undervisning.
Avatar billede snepnet Nybegynder
27. oktober 2004 - 09:09 #3
håber den er god :o)
mvh
Avatar billede ihtezaz Praktikant
28. oktober 2004 - 00:09 #4
Ok, jeg tror ikke jeg kan ændre på min datagrid nu, den er alt for proppet :) Men hvordan angiver man hvilke af kolonnerne skal renderes som TextBox ved Editcommand ?
Avatar billede snepnet Nybegynder
28. oktober 2004 - 00:46 #5
som jeg skrev.... i EditItemTemplaten er der angivet at det skal indsættes en tekstboks, men der kan du bare angive at der skal være en label istedet.

meeeen.... mon ikke du kan fikse den med et hurtig hax i din ItemDataBound... sådan lidt i stil med :

// i din ItemDataBound-handler
if(e.Item.ItemType == ListItemType.EditItem)
{
  e.Item.Cells[0].Text = ((DataRowView)e.Item.DataItem)["SomeString"].ToString();
}

du må lige ændre Cells[0] så det er et index der normalt dukker en tekstboks op på, og self. også ["SomeString"] så der står noget du har i dit datagrundlag.

jeg er næsten sikker på at den vil gå.

vi skrives ved
/snep
Avatar billede snepnet Nybegynder
06. november 2004 - 00:01 #6
hej ihtezaz - hvordan går det med denne her ?
(du får lige et svar, hvis du kunne bruge det og vil lukke)
vi skrives ved :o)
/snep
Avatar billede ihtezaz Praktikant
06. november 2004 - 00:23 #7
Hejsa snepnet
jeg får denne kørsel fejl, når jeg trykker på redigere ved at brug ovenstående kode."det oprindelige tekst, det står i cellen"
is neither a DataColumn nor a DataRelation for table Oversigt.
Avatar billede ihtezaz Praktikant
06. november 2004 - 00:30 #8
Sorry.. det virker perfekt, jeg skulle bare sætte kollonens navn inde i ["SomeString"]. Tak snepnet, du er bare dygtig.
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