Forum > ASP.NET 3.x > Generella frågor
Hej
Jag använder en SqlDataSource och databinder den till en DropDownList. Det funkar utmärkt men sedan vill jag lägga till en ListItem till. Hur löser jag detta på smidigaste möjliga vis? Hellst vill jag också att mitt "extra" ListItem skall ligga först i listan. Jag har testat att lägga till items i Page_Load och med DropDownListens edit items men de verkar bara skrivas över.
| Skriv utTesta och Lägg in det i det deklarativa.,
<asp:DropDownList runat="server" ID="ddlSomething>
<asp:ListItem Text="--- choose something ---" Value="someValue" Selected="True"/>
</asp:DropDownList>
Redigerad av Kimpo
Anledning: fixade till den lite
Jag har testat det men det verkar som om Databind bara skriver över allt jag skrivit in.
kan du inte lägga till fler objekt i din datakälla innan du databinder den?
"add(new object()...)"?
Precis som voigtan skriver får du göra.
Använd din DropDownList från code behind och kör Items.Add(new ListItem......
Det låter ju precis som det jag vill göra men hur gör jag det? Jag har precis lärt mig använda datakällor och låter visual studio generera koden så jag begriper inte så mycket. Min datakälla ser ut så här:
<asp:SqlDataSource ID="SqlDataSourceClients" runat="server" ConnectionString="<%$ ConnectionStrings:testConnectionString %>"SelectCommand="SELECT [Email] FROM [Person] WHERE ([Pt] = @Pt)">
<SelectParameters>
<asp:SessionParameter Name="Pt" SessionField="user" Type="String" />
</SelectParameters>
</asp:SqlDataSource>
Är det i denna koden jag skall lägga till något eller gör jag det i code behind?
Pbf, jag förstår inte riktigt, att lägga till items till dropdownlistan är väl inte samma sak som att lägga till datakällan? Jag har testat att lägga till items i Page_Load men de skrivs över. Om jag istället lägger till dem i datakällan så kommer de väl med då jag skriver över.
Var databinder du din dropdownlist? Du måste ju få en datakälla (från din SELECT sats). Om du databinder med id:t SqlDataSourceClients så få du även lägga in din dropdown lista(exemplet med idt "test"):
test.items.add(new ListItem(...));
Så vitt jag kan se så har jag tidigare inte gjort något anrop till databind utan det har visual studio löst åt mig. Jag testade nyss att göra ett manuellt anrop till databind och sedan lägga till ett item till dropdownlistan och det fungerade men då hamnade mitt manuellt ditlagda item sist. I och för sig kan jag ju sätta den till selected item och jag kanske får nöja mig med det. Gör jag tvärt om, lägger till mitt item först och sedan anropar databind så skrivs itemet över.
du kan testa att köra en insert:
test.Items.Insert(0,new ListItem());
Insert löser problemet, tack så mycket.
Jag menar ju såhär t.ex. med min egen kod:
IList<Friends> f = FriendsManager.GetFriends(CurrentUserId);
foreach (Friends i in f) {
if (i.RecieverUserID == CurrentUserId) {
ddlFriends.Items.Add(new ListItem(i.User.Username, i.User.Username));
} else {
ddlFriends.Items.Add(new ListItem(i.Reciever.Username, i.Reciever.Username));
}
}