Avatar billede mccannon Nybegynder
05. august 2004 - 08:11 Der er 12 kommentarer og
1 løsning

Datagrid Edititem template problemer

hejsa jeg har et datagrid, hvor, når der trykeks på edit, kommer en dropdownlist frem i den kolonne i datagriddet, og så vil jeg jo gerne have at dropdownlisten viser det som er valgt, og ikke bare viser index nul

men det het, virker ikke,.:
SelectedIndex='<%# getSelectedIndex(DataBinder.Eval(Container.DataItem,"statusid")) %>'

giver dette:
DataBinder.Eval: 'System.Data.DataRowView' does not contain a property with the name statusid.

nogen som ved hvad problemet er ?
Avatar billede snepnet Nybegynder
05. august 2004 - 09:09 #1
problemet er at du forsøger at kalde en property (statusid) på dit datatitem, som er af type DataRowView - som ikke har sådan en property.
Det er nok mere sådan noget her du skal ud i :

<%# GetSelectedIndex(Container.DataItem("statusid")) %>
Avatar billede mccannon Nybegynder
05. august 2004 - 09:44 #2
<%# GetSelectedIndex(Container.DataItem("statusid")) %>

giver dette :
Compiler Error Message: CS0118: 'System.Web.UI.WebControls.DataGridItem.DataItem' denotes a 'property' where a 'method' was expected


:-(
Avatar billede snepnet Nybegynder
05. august 2004 - 10:17 #3
En komplet kunne se sådan her ud... gør din det ?

<EditItemTemplate>
<asp:DropDownList runat="server" id="lstCategories"
      DataValueField="SomeId"  DataTextField="Name"
      DataSource='<%# GetSomething() %>'
      SelectedIndex='<%# GetSelectedIndex(Container.DataItem("SomeId")) %>' />
</EditItemTemplate>
Avatar billede mccannon Nybegynder
05. august 2004 - 10:34 #4
Sådan her ser den ud, ca, der hvor ting står på flere linier her, står på en linie i min kode...

<asp:TemplateColumn HeaderText="Status">
  <HeaderStyle ForeColor="GhostWhite" Width="90px"></HeaderStyle>
  <ItemTemplate>
    <asp:Label id=lblproductstatus runat="server"
      Text='<%# DataBinder.EvalContainer, "DataItem.statusicon") %>'>
    </asp:Label>
  </ItemTemplate>
  <EditItemTemplate>
    <asp:DropDownList id=drpOrderOptions runat="server"
      DataSource="<%# GetOptions()%>" DataValueField="statusid"
      DataTextField="statusname" Width="110px"
      SelectedIndex='<%# GetSelectedIndex(Container.DataItem("SomeId")) %>'>
    </asp:DropDownList>
  </EditItemTemplate>
  </asp:TemplateColumn>
Avatar billede snepnet Nybegynder
05. august 2004 - 10:41 #5
ok... du skal nok lige ændre mine tekster.. someid skal nok være statusid.
Avatar billede mccannon Nybegynder
05. august 2004 - 10:42 #6
jaja :) det ved jeg godt...der står heller ikke someid i min kode :)
Avatar billede snepnet Nybegynder
05. august 2004 - 11:25 #7
Ok... nyt eksempel :o)

<ItemTemplate>
    <asp:TextBox id=TextBox2 runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.CurrencyCode") %>'>
    </asp:TextBox>
    <asp:DropDownList runat="server" id="ddDropDown" DataSource='<%# CurrencyChoices %>' SelectedIndex='<%# GetSelectedIndex(DataBinder.Eval(Container, "DataItem.CurrencyCode").ToString()) %>'/>
    </asp:DropDownList>
</ItemTemplate>

Det virker i hvert fald, men lige en ting... Hvordan ser din GetSelectedIndex ud ?
Avatar billede mccannon Nybegynder
05. august 2004 - 11:29 #8
umm jeg kan bare ikke viser ens ting i ikke edit mode og i edit mode :-(

public int getSelectedIndex(object optionid)
        {   
            string option = "";
            if(optionid.Equals(DBNull.Value))
            {
                return 0;
            }
            else
            {
                option = optionid.ToString();
            }
            DataTable tempdt = this.dsDgProdList.Tables[0];
            int indexid = 0;
            for(int i = 0; i <= tempdt.Rows.Count -1; i++)
            {
                if(option.ToString() == tempdt.Rows[i]["statusid"].ToString())
                {
                    indexid = i;
                    break;
                }
            }

            return indexid;
        }
Avatar billede snepnet Nybegynder
05. august 2004 - 11:44 #9
Den her er jeg ikke sikker på at jeg forstod :
"umm jeg kan bare ikke viser ens ting i ikke edit mode og i edit mode :-("

hvis du vil have forskellige templates afhængig af om rækken er i editmode eller ej, så skal de jo bare laves - f.eks. her :

<ItemTemplate>
    <asp:Label id=TextBox2 runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.CurrencyCode") %>'>
    </asp:Label>
    </asp:DropDownList>
</ItemTemplate>


<EditItemTemplate>
    <asp:DropDownList runat="server" id="ddDropDown" DataSource='<%# CurrencyChoices %>' SelectedIndex='<%# GetSelectedIndex(DataBinder.Eval(Container, "DataItem.CurrencyCode").ToString()) %>'/>
    </asp:DropDownList>
</EditItemTemplate>
Avatar billede snepnet Nybegynder
10. august 2004 - 00:04 #10
hvad med den her mccannon... er du i hus med det ?
Avatar billede snepnet Nybegynder
02. oktober 2004 - 03:26 #11
mccannon ?
(jeg prøver at rydde op, så du får et svar her, hvis jeg har været behjælpelig)
mvh
Avatar billede snepnet Nybegynder
21. oktober 2004 - 19:49 #12
mccannon ?
Avatar billede mccannon Nybegynder
09. november 2004 - 00:36 #13
damn..den her havde jeg overset...sorry
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