DropDownList Bindolása FormView-ban

DropDownList Bindolása FormView-ban
2010-04-18T19:43:13+02:00
2010-04-18T19:43:13+02:00
2022-11-17T11:30:42+01:00
Dandi
Üdvözletem!

Nagyon idegesítő problémába futottam, amit képtelen vagyok megoldani CodeBehinde nélkül (szempont lenne, hogy MarkUp megoldás legyen).

Helyzet:

.NET 4.0-át használok ami jelenesetben nem olyan érdekes.
Van egy FormView ami InsertModeban van, Bindolva a megfelelő mezők, a DataSource-e egy SqlDataSource. A feltöltéshez ki kell választani egy kategóriát, tehát van a FormViewba egy DropDownList aminek egy másik SqlDataSoruce a forrása, ami lekérdezi a kategóriákat, illetve a DropDownList SelectedValue-ja Bindolva van.

Valahogy így néz ki eddig:

<asp:SqlDataSource ID="sdsPrimary" InsertCommand="..." ... > <InsertParameters> .... </InsertParameters> </asp:SqlDataSource> <asp:SqlDataSource ID="sdsSecondary" InsertCommand="..." SelectCommand="..." ... > <InsertParameters> .... </InsertParameters> </asp:SqlDataSource> <asp:FormView ID="fwPrimary" DataSourceID="sdsPrimary" DefaultMode="Insert"> <InsertItemTemplate> ... <asp:DropDownList DataSourceID="sdsSecondary" SelectedValue='<%# Bind("CategoryID") %>' ... /> ... </InsertItemTemplate> </asp:FormView>

Eddig működik! Ellenben úgy szeretném megoldani, hogy alatta egyből lehessen új kategóriát hozzáadni, ha esetleg szükséges lenne, tehát az elsődleges FormView idevágó DropDownList-je alá deklarálok egy másodlagos FormView-t, új kategória hozzáadására. Így fest:


<asp:SqlDataSource ID="sdsPrimary" InsertCommand="..." ... > <InsertParameters> .... </InsertParameters> </asp:SqlDataSource> <asp:SqlDataSource ID="sdsSecondary" InsertCommand="..." SelectCommand="..." ... > <InsertParameters> .... </InsertParameters> </asp:SqlDataSource> <asp:FormView ID="fwPrimary" DataSourceID="sdsPrimary" DefaultMode="Insert"> <InsertItemTemplate> ... <asp:DropDownList DataSourceID="sdsSecondary" SelectedValue='<%# Bind("CategoryID") %>' ... /> <asp:FormView ID="fwSecondary" DataSourceID="sdsSecondary" DefaultMode="Insert"> <InsertItemTemplate> <asp:TextBox ID="tbNewSecondaryValue" Text='<%# Bind("CategoryName") %>' /> ... </InsertItemTemplate> </asp:FormView> ... </InsertItemTemplate> </asp:FormView>

Na ennél a pontnál minden elromlik, ugyanis ha nem adok hozzá új kategóriát, csak simán kiválasztok egy meglévőt, és feltöltöm, akkor szépen megy, de ha megpróbálok hozzáadni egy új kategóriát a másodlagos gyerek FormView-vel, akkor "Databinding methods such as Eval(), XPath(), and Bind() can only be used in the context of a databound control." kivételt dob.

Még azt sem tudom pontosan belőni, hogy melyik kontrol száll el. Készítettem egy saját DropDownList-et, aminek volt egy új mezője SelectedValue helyett, az nem segített, a FormView-t hiába cserélem le mondjuk ListView-ra. Mi lehet egyátalán a hiába? Neadj isten, hogy tudnám javítani?

Előre is köszönöm a válaszokat! Ha valamit kiahgytam, szóljatok.
Mutasd a teljes hozzászólást!

Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd