Заполнение дочерних контролов FormView
От: Synapse  
Дата: 15.10.10 09:34
Оценка:
У меня есть формвью, дропдаун в котором надо заполнить программно. В каком обработчике это сделать? У меня вываливается либо 'GenreList' has a SelectedValue which is invalid because it does not exist in the list of items. либо 'Bind, Eval can only be used in databound control'
код:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Edit.aspx.cs" Inherits="FormsBench.Edit" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<script runat="server">
    protected Dictionary<string, string> Genres = new Dictionary<string, string>(){{"fiction", "fiction"}};
</script>
<head runat="server">
</head>
<body>
    <form id="form1" runat="server">
        <asp:formview id="FormView1" runat="server" datakeynames="Id" defaultmode="Edit" datasourceid="EntityDataSource1">
            <edititemtemplate>
                Id: <asp:label id="IdLabel1" runat="server" text='<%# Eval("Id") %>' />                
                Title: <asp:textbox id="TitleTextBox" runat="server" text='<%# Bind("Title") %>' />                
                AuthorId: <asp:textbox id="AuthorIdTextBox" runat="server" text='<%# Bind("AuthorId") %>' />                
                Genre:    <asp:dropdownlist id="GenreList" runat="server" selectedvalue='<%# Bind("Genre") %>'   />                                
                <asp:linkbutton id="UpdateButton" runat="server" causesvalidation="True" 
                    commandname="Update" text="Update" />
                &nbsp;<asp:linkbutton id="UpdateCancelButton" runat="server" 
                    causesvalidation="False" commandname="Cancel" text="Cancel" />
            </edititemtemplate>
        </asp:formview>    
    <asp:entitydatasource id="EntityDataSource1" runat="server" 
        connectionstring="name=SandBoxEntities" defaultcontainername="SandBoxEntities" 
        enableflattening="False" enableupdate="True" entitysetname="Books" 
        entitytypefilter="Book">
    </asp:entitydatasource>
    </form>
</body>
</html>
Re: Заполнение дочерних контролов FormView
От: huligun Россия  
Дата: 15.10.10 10:05
Оценка:
Здравствуйте, Synapse, Вы писали:

А где вы DataSource для выпадающего списка задаете?

S>У меня есть формвью, дропдаун в котором надо заполнить программно. В каком обработчике это сделать? У меня вываливается либо 'GenreList' has a SelectedValue which is invalid because it does not exist in the list of items. либо 'Bind, Eval can only be used in databound control'

S>код:

...        
                Genre:    <asp:dropdownlist id="GenreList" runat="server" selectedvalue='<%# Bind("Genre") %>'   />                                
...
Re[2]: Заполнение дочерних контролов FormView
От: Synapse  
Дата: 15.10.10 10:28
Оценка:
Здравствуйте, huligun, Вы писали:
H>А где вы DataSource для выпадающего списка задаете?
Я в разных местах пробовал — FormView.OnItemCreated, FormView.OnItemDataBound, ни фига не работает.
Re[3]: Заполнение дочерних контролов FormView
От: huligun Россия  
Дата: 15.10.10 14:59
Оценка:
Здравствуйте, Synapse, Вы писали:

Попробуйте передавать его в разметке
<asp:dropdownlist id="GenreList" runat="server" selectedvalue='<%# Bind("Genre") %>' DataSource='<%# GetDataSource() %>'>


S>Здравствуйте, huligun, Вы писали:

H>>А где вы DataSource для выпадающего списка задаете?
S>Я в разных местах пробовал — FormView.OnItemCreated, FormView.OnItemDataBound, ни фига не работает.
Re[4]: Заполнение дочерних контролов FormView
От: Synapse  
Дата: 15.10.10 15:04
Оценка:
Здравствуйте, huligun, Вы писали:
H>Попробуйте передавать его в разметке
H>
H><asp:dropdownlist id="GenreList" runat="server" selectedvalue='<%# Bind("Genre") %>' DataSource='<%# GetDataSource() %>'>
H>

Вы что-то странное предлагаете, декларативно можно только DataSourceId задавать, да и синтаксис у вас странный
Re[5]: Заполнение дочерних контролов FormView
От: huligun Россия  
Дата: 18.10.10 13:05
Оценка:
Здравствуйте, Synapse, Вы писали:

А в чем странность? У меня это работает. Притом что ситуация осложняется тем, что Genre у меня составной объект.

S>Здравствуйте, huligun, Вы писали:

H>>Попробуйте передавать его в разметке
H>>
H>><asp:dropdownlist id="GenreList" runat="server" selectedvalue='<%# Bind("Genre") %>' DataSource='<%# GetDataSource() %>'>
H>>

S>Вы что-то странное предлагаете, декларативно можно только DataSourceId задавать, да и синтаксис у вас странный
Re[6]: Заполнение дочерних контролов FormView
От: huligun Россия  
Дата: 18.10.10 13:10
Оценка:
Здравствуйте, huligun, Вы писали:

Правда у меня не GetDataSource(), а свойство подставлено в DataSource='<%# %>'>

H>Здравствуйте, Synapse, Вы писали:


H>А в чем странность? У меня это работает. Притом что ситуация осложняется тем, что Genre у меня составной объект.


S>>Здравствуйте, huligun, Вы писали:

H>>>Попробуйте передавать его в разметке
H>>>
H>>><asp:dropdownlist id="GenreList" runat="server" selectedvalue='<%# Bind("Genre") %>' DataSource='<%# GetDataSource() %>'>
H>>>

S>>Вы что-то странное предлагаете, декларативно можно только DataSourceId задавать, да и синтаксис у вас странный
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.