Como você toca manualmente o objeto complexo para o controle modificado como uma linha em um GridView?

StackOverflow https://stackoverflow.com/questions/711304

Pergunta

Estou lutando com a sintaxe do banco de dados aqui. Por exemplo, eu tenho uma estrutura de dados como esta -

public class Course{

public string CourseName {get;set;}

public string CourseCode {get;set;}

public List<Instructor> InstructorsTeaching{get;set;}

}

public class Instructor{

public string InstructorName{get;set;}

public string InstructorCode{get;set;}

}

Agora, se eu quiser vincular esta lista de cursos para dizer um Gridview manualmente, eu poderia fazer

<asp:TextBox runat="server" ID="tbCourseName" Text='<%# Bind("CourseName")%>'/>

Embora especifique para o modelo de edição da grade, mas como faço para vincular os instrutores que ensinam propriedades para dizer uma caixa de listagem na mesma linha, não consigo descobrir a sintaxe, aqui está um exaple do que eu tentei e falhei

<asp:ListBox runat="server" ID="tbInstructors" 
     DataSource='<%# Eval("InstructorsTeaching") as List<Instructor> %>'>
    <asp:ListItem Text='<%# Bind("InstructorCode")%>' 
                 Value='<%# Bind("InstructorName")%>'/>...
 <as:ListBox/>

Meu código acima não funciona com certeza :). Idealmente, eu gostaria de fazer isso na marcação em vez de código atrás.

Foi útil?

Solução

Eu não acho que você pode definir um conjunto de dados assim, tente configurá -lo Evento Rowdatabound de Gridview

Outras dicas

Você atingiu um dos principais motivos pelos quais o ASP.NET bidabinding de banco de dados é uma merda: você realmente não pode fazer a ligação de dados bidirecional aninhada.

Por um lado, embora você possa fazê -lo com avaliar, o ASP.NET não permite a sintaxe do gráfico aninhado com a expressão de ligação (isto é,

Além disso, para controles de lista aninhados, como o seu cenário, cada lista exigirá um controle adicional do DataSource. Você está definindo o DataSource na sua caixa de listagem, que funcionará para expressões de avaliação, mas, para que as expressões vinculativas funcionem, você deve usar o DataSourceId para fornecer o ID de um controle de fonte de dados que fornece o conjunto de resultados interno. E mesmo assim, seus resultados seriam kludgy, pois você só poderia atualizar uma fonte de dados por vez.

O banco de dados bidirecional provavelmente foi escrito com o SQLDatasource em mente e não o objectDataSource. Se você possui um gráfico de objetos de vários níveis, achará doloroso usar o banco de dados bidirecional.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top