Avatar billede madox_madox Nybegynder
16. august 2004 - 09:29 Der er 13 kommentarer og
1 løsning

Redigerings-"tilstand" i en datagrid

Jeg har lavet en datagrid hvor der bliver indlæst noget data fra en access database.
I en søjle i datagrid'en har jeg lavet en edit knap, som man kan bruge til at ændre data i databasen med, det virker også fint, men når jeg trykker på Edit, bliver de tesxtboxe, som man ændrer data i alt for brede i forhold til bredden på den enkelte søjle.
Mit spørgsmål er så: hvordan kan man ændre bredden på textbox'ene som kommer i "edit-tilstand"

mvh
Avatar billede snepnet Nybegynder
16. august 2004 - 09:33 #1
hvis du gerne vil styre hvordan rækkerne ser ud i de enkelte tilstande vil det være en fordel for dig at oprette templates til det.
du kan godt "bryde ind" i den sekvens der viser dig tekstboksene, hvis du vil - men i længden tror jeg du vil blive gladere for det andet.
Avatar billede snepnet Nybegynder
16. august 2004 - 09:38 #2
Prøv at se sådan et grid her f.eks. :

<asp:DataGrid id="DataGrid1" style="Z-INDEX: 101; LEFT: 16px; POSITION: absolute; TOP: 16px" runat="server"
    AutoGenerateColumns="False">
    <Columns>
        <asp:TemplateColumn HeaderText="SomeString">
            <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>

Der har du en ItemTemplate, og en EditItemTemplate, hvilket giver dig mulighed for meget præcist at angive hvorda du vil have tingene til at se ud i de forskellige tilstande.
Avatar billede snepnet Nybegynder
16. august 2004 - 09:40 #3
Men som sagt kan du også gøre det i din code-behind (hvis du arbejder med det), så du kan lige sige til hvis det er det du helst vil - så skal du nok få et eksempel på det også :o)
Avatar billede madox_madox Nybegynder
16. august 2004 - 10:50 #4
Tror godt jeg ville se et eksempel på det, da jeg ikke umiddelbart kan få det til at virke.
Avatar billede snepnet Nybegynder
16. august 2004 - 11:23 #5
Kan du ikke få det med templates til at virke ?
Hvis du arbejder i Visual Studio kan du lave det hele i designeren....

Nå man hvis du vil lave det i din code-behind, kan du sørge for at abbonnere på ItemCreated-evented fra datagriddet, og lave noget i stil med nedenstående :
(nu er det hverken elegant eller skudsikkert, men det kan være at du kan se fidusen).

private void DataGrid2_ItemCreated(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
    if(e.Item.ItemIndex == DataGrid2.EditItemIndex)
    {
        foreach(TableCell cell in e.Item.Cells)
        {
            if(cell.HasControls())
            {
                if(cell.Controls[0] is TextBox)
                {
                    TextBox tb = (TextBox)cell.Controls[0];           
                    tb.Width = 300;
                }
            }
        }
    }
}

Mvh
Avatar billede thrytter Nybegynder
16. august 2004 - 16:16 #6
snepset>> Hvorfor ikke bare sætte bredden direkte med width="300" på tekstboksen, eks:

<EditItemTemplate>
  <asp:TextBox id="TextBox1" runat="server" Width="300"
    Text='<%# DataBinder.Eval(Container, "DataItem.FldString") %>'>
  </asp:TextBox>
</EditItemTemplate>
Avatar billede snepnet Nybegynder
16. august 2004 - 16:38 #7
thrytter>>
Mit første forslag var at det hele blev skrevet i templaten, men jeg spurgte madox_madox om han ville have et eksempel på noget code-behind, så derfor lavede jeg også det.
Avatar billede snepnet Nybegynder
16. august 2004 - 16:39 #8
(eller rettere.... jeg lavede det fordi han svarede ja til at han gerne vil se det :o)
Avatar billede thrytter Nybegynder
16. august 2004 - 16:50 #9
Min fejl - overså at det netop var et eksempel på hvordan det kunne laves code-behind.

Nu har han så et eksempel på begge dele.....
Avatar billede snepnet Nybegynder
16. august 2004 - 16:56 #10
Kan man jo sige :o)
Faktisk var det her http://www.eksperten.dk/spm/529649#rid4851539 - et forsøg på at illustrere scriptmodellen ;o)
Avatar billede snepnet Nybegynder
02. oktober 2004 - 03:22 #11
hej madox_madox... kan vi lukker her ?
mvh
Avatar billede snepnet Nybegynder
02. oktober 2004 - 03:22 #12
(*lolz* eller bare lukke ;o)
Avatar billede madox_madox Nybegynder
10. april 2006 - 12:44 #13
Ups, bedre sent end aldrig ;-)
Avatar billede snepnet Nybegynder
10. april 2006 - 20:41 #14
haha :o) 1½ år ... det er alligevel noget :oD
mvh
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