Avatar billede brynil Nybegynder
30. april 2006 - 19:09 Der er 16 kommentarer og
1 løsning

DataGrid - DropDownList værdi under redigering

Når jeg redigerer en række i et datagrid viser dropdownlisten ikke den værdi der i forvejen var valgt.

Jeg har bl.a. forsøgt med at fjerne 'Selected Value = True', men det var ikke løsningen.

Kan man tvinge DDL'en til at vise den værdi der var til stede før redigeringen begyndte ?

Værdierne indlæser jeg med <Asp:ListItem Value... fra aspx siden.
Avatar billede rasserw Nybegynder
30. april 2006 - 21:25 #1
Hej,
du kan velsagtens fange SelectedValue i din Edit Command-metode og så sætte selected Value programmatisk med denne værdi når siden renderes igen?
Du kan fange SelectedValue eller SelectedIndex og så sætte den respektive.

Måske det var lidt inspiration.

Venligst
Arne Johansen
www.frameworker.net
Avatar billede brynil Nybegynder
30. april 2006 - 21:39 #2
Jeg kan godt få fat i den oprindelige værdi. Det er ikke lykkedes mig at få den til DDL'en.

Jeg har forsøgt på denne måde, men får at vide at ddlKeep = nothing, så jeg fanger tilsyneladende ikke DDL'en:

Dim ddlKeep As DropDownList

ds.ReadXml(strFilePath)

x1 = gv.DataKeys.Item(E.Item.ItemIndex)
v1 = E.Item.ItemIndex
ds.Tables("elementer").DefaultView.RowFilter = "elementNr='" & x1 & "'"

ddlKeep = CType(E.Item.FindControl("retElement"), DropDownList)
ddlKeep.SelectedItem.Text = "alfa"

Det skal jo også være muligt at ændre værdien, hvis den er forkert.
Avatar billede brynil Nybegynder
30. april 2006 - 21:41 #3
Ellers må jeg nok overveje at bruge tekstboks istedet :-/
Avatar billede snepnet Nybegynder
30. april 2006 - 23:06 #4
selectedvalue = true er nok heller ikke løsningen. du skal vel have selectedvalue=<et databindingsudtryk> - f.eks.:
SelectedValue='<% Eval("someId") %>'
mvh
Avatar billede snepnet Nybegynder
30. april 2006 - 23:06 #5
SelectedValue='<%# Eval("someId") %>'
mvh
Avatar billede brynil Nybegynder
30. april 2006 - 23:51 #6
Det ser ikke rigtig ud til at den vil kendes ved SelectedValue. Men jeg får ikke kigget rigtig på det før imorgen. Så vender jeg tilbage.
Avatar billede snepnet Nybegynder
01. maj 2006 - 00:28 #7
den skulle gerne være kendt hvis det er en dropdown.
hvilken version af vs/framework arbejder du med?
mvh
Avatar billede brynil Nybegynder
01. maj 2006 - 16:05 #8
Den er godt nok kendt af ddl snepnet. Beklager, jeg var blevet ret ukoncentreret igår aftes.

Men det jeg eftersøger er, at når jeg starter edit, så læses værdien der allerede er gemt (i xml) og denne værdi skal være den viste værdi i ddl'en i editmode.

Jeg kan godt aflæse den tidligere værdi og gemme den med dit forslag, men så kommer jeg ud i den situation, at jeg må tage højde for at denne værdi rent faktisk skal rettes.

Det smarteste må være at ddl'en viser den værdi der er gemt (ligesom det sker i en textbox) og så lade det være op til brugeren om den skal bibeholdes eller ændres.

Har du et forslag til hvordan jeg kan tvinge ddl'en til at vise en bestemt tekst i editmode ?

Min kode for editmode ser sådan ud:

Sub setEditMode(ByVal Sender As Object, ByVal E As DataGridCommandEventArgs)

    Dim ds As New DataSet
    Dim x1, v1 As String
    Dim ddlKeep As DropDownList

    ds.ReadXml(strFilePath)

    x1 = gv.DataKeys.Item(E.Item.ItemIndex)
    v1 = E.Item.ItemIndex
    ds.Tables("elementer").DefaultView.RowFilter = "elementNr='" & x1 & "'"

    '-------
    'ddlKeep = CType(E.Item.FindControl("retElement"), DropDownList)
    'ddlKeep.SelectedValue = "3"
    '-------

    If ds.Tables("elementer").DefaultView.Count > 0 Then
        txtTestRowValue.Text = "alfa"
        ds.Tables("elementer").Rows(v1).Item("elementer") = txtTestRowValue.Text


        gv.EditItemIndex = E.Item.ItemIndex
        gv.ShowFooter = "false"
        LoadXML()
    End If

End Sub
Avatar billede brynil Nybegynder
01. maj 2006 - 16:08 #9
Hvis jeg forsøger med den udkommenterede kode får jeg at vide at ddlKeep er nothing!
Avatar billede snepnet Nybegynder
01. maj 2006 - 16:53 #10
Hej Brynil ... bruger du ikke version 2.0?
mvh
Avatar billede brynil Nybegynder
01. maj 2006 - 16:54 #11
Jo - vs2005
Avatar billede snepnet Nybegynder
01. maj 2006 - 17:15 #12
ok.... du kan lave det hele deklerativt hvis du vil - f.eks. sådan her:

et templatefield i dit grid:

<asp:TemplateField HeaderText="Country" SortExpression="Country">
    <ItemTemplate>
        <asp:Label ID="lblChoice" runat="server" Text='<%# Eval("Choice") %>'></asp:Label>
    </ItemTemplate>
    <EditItemTemplate>
        <asp:DropDownList
            ID="ddChoices"
            runat="server"
            DataSourceID="ChoicesDataSource"
            SelectedValue = '<%# Bind("Choice") %>'>
        </asp:DropDownList>                                           
    </EditItemTemplate>
</asp:TemplateField>

så har du en kolonne der viser en label når der ikke editeres, og en dropdop når der editeres.
indholdet i din label - bliver så indholdet af feltet Choices i din datakilde.

du kan så bruge en datasource control til at give dig valgmulighederne:

<asp:ObjectDataSource
    ID="ChoicesDataSource"
    runat="server"
    SelectMethod="GetChoices"
    TypeName="Choices">
</asp:ObjectDataSource>

ovenstående forudsætter så - at du har en klasse der hedder Choices - med en metode på der hedder GetChoices - der returnerer dig valgmulighederne.

der findes dog også en XmlDataSource der kan benyttes lidt på samme måde.

mvh
Avatar billede brynil Nybegynder
01. maj 2006 - 17:37 #13
Takker - den skal jeg lige ha' tygget på. Men point til dig når du smider et svar!

Jeg kom til at tænke på om det ville være en fornuftig mulighed at manipulere rækkefølgen i en datasource istedet. Pt bruger jeg bare en fast tildeling fra aspx siden, men skal ha den over i en datasource af en art.
Avatar billede snepnet Nybegynder
01. maj 2006 - 17:48 #14
kommer her ... bare spørg hvis der er noget - ellers kan du hente nogle eksempler på den slags her:
du kan hente et eksempel på ovenstående her:
http://www.microsoft.com/downloads/details.aspx?FamilyID=3f0aa1ee-8041-4ec1-9141-3f83d0bcbd62&displaylang=da
mvh
Avatar billede snepnet Nybegynder
01. maj 2006 - 17:49 #15
og et svar får du her :o)
mvh
Avatar billede brynil Nybegynder
01. maj 2006 - 17:53 #16
Download Center ?
Avatar billede snepnet Nybegynder
01. maj 2006 - 17:57 #17
ja - du skulle gerne komme ind på en side hvor du nederst i bunden kan vælge at hente en præsentation - og en solution med eksempler.
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