Le remplissage d'un ASP.Net DropDownList à l'aide de VB.Net le codage dans le fichier code-behind
Nous avons un DropDownList dans le balisage d'un ASP.Net /VB.Net formulaire web.
Nous sommes désireux de remplir la DropDownList avec des données à partir d'un jeu de données créé à partir du DataSet designer, mais le codage que nous utilisons dans le fichier code-behind ne trouve pas la DropDownList ID à l'aide de FindControl.
Pouvez-vous vérifier mon codage et laissez-moi savoir ce que je dois faire pour obtenir la DropDownList peuplée?
Balisage de la DropDownList:
<% '-- DetailsView (Grid) for details of the GridView -- %>
<% '---------------------------------------------------- %>
<asp:DetailsView
ID="DetailsView"
runat="server"
AutoGenerateRows="False"
Height="50px"
Width="207px"
DataSourceID="SqlDataSourceDetails"
DataKeyNames="ID"
OnItemCommand="DetailsViewDetails_ItemCommand"
OnDataBound="DetailsView_DataBound">
<Fields>
<asp:TemplateField HeaderText="Class:" SortExpression="ClassID">
<EditItemTemplate>
<asp:DropDownList ID="DropDownListClass" Runat="server"> </asp:DropDownList>
<asp:RequiredFieldValidator ID="RequiredFieldValidatorEditDropDownListClass" runat="server"
ControlToValidate="DropDownListClass"
ErrorMessage="Please select a class." Font-Bold="True" Font-Italic="True" ForeColor="Red"
SetFocusOnError="True" Display="Dynamic">
</asp:RequiredFieldValidator>
</EditItemTemplate>
<ItemTemplate>
<asp:Literal ID="LiteralClass" runat="server"
Text='<%# FormatAsMixedCase(Eval("ClassName").ToString())%>' />
</ItemTemplate>
<ItemStyle ForeColor="Blue" />
</asp:TemplateField>
</Fields>
De codage dans le fichier code-behind:
Protected Sub DetailsView_DataBound(sender As Object, e As EventArgs)
Dim theClassesTableAdapter As New DataSetClassesTableAdapters.ClassesTableAdapter
Dim ddlTheDropDownList = DirectCast(FindControl("DropDownListClass"), DropDownList)
ddlTheDropDownList.DataSource = theClassesTableAdapter.GetDataByAllClasses
ddlTheDropDownList.DataTextField = "ClassName"
ddlTheDropDownList.DataValueField = "ClassID"
ddlTheDropDownList.SelectedValue = "ClassID"
ddlTheDropDownList.DataBind()
End Sub
Balisage de la DataSouce de DetailsView:
<% '-- Datasources -- %>
<% '----------------- %>
<asp:SqlDataSource
ID="SqlDataSourceDetails"
runat="server"
ConnectionString="<%$ ConnectionStrings:Knowledge Academy %>"
DeleteCommand=
"DELETE FROM [TeacherSchedule]
WHERE [ID] = @ID"
InsertCommand=
"INSERT INTO [TeacherSchedule]
([DayOfWeek],
[Grade],
[StartTime],
[EndTime],
[ClassID])
VALUES (@DayOfWeek,
@Grade,
@StartTime,
@EndTime,
@ClassID)"
SelectCommand=
"SELECT TeacherSchedule.ID, TeacherSchedule.Grade, TeacherSchedule.StartTime, TeacherSchedule.EndTime, TeacherSchedule.TeacherID, TeacherSchedule.ClassID,
TeacherSchedule.DayOfWeek, Classes.ClassName, Teachers.Forename, Teachers.Surname
FROM TeacherSchedule INNER JOIN
Classes ON TeacherSchedule.ID = Classes.ID INNER JOIN
Teachers ON TeacherSchedule.ID = Teachers.ID
WHERE (TeacherSchedule.ID = @ID)"
UpdateCommand=
"UPDATE [TeacherSchedule]
SET [DayOfWeek] = @DayOfWeek,
[Grade] = @Grade,
[StartTime] = @StartTime,
[EndTime] = @EndTime,
[ClassID] = @ClassID
WHERE [ID] = @ID">
<DeleteParameters>
<asp:Parameter Name="ID" Type="Int32" />
</DeleteParameters>
<InsertParameters>
<asp:Parameter Name="DayOfWeek" Type="String" />
<asp:Parameter Name="Grade" Type="String" />
<asp:Parameter Name="StartTime" Type="String" />
<asp:Parameter Name="EndTime" Type="String" />
<asp:Parameter Name="ClassID" Type="Int32" />
</InsertParameters>
<SelectParameters>
<asp:ControlParameter ControlID="GridViewSummary" Name="ID" PropertyName="SelectedValue" Type="Int32" />
</SelectParameters>
<UpdateParameters>
<asp:Parameter Name="DayOfWeek" Type="String" />
<asp:Parameter Name="Grade" Type="String" />
<asp:Parameter Name="StartTime" Type="String" />
<asp:Parameter Name="EndTime" Type="String" />
<asp:Parameter Name="ClassID" Type="Int32" />
<asp:Parameter Name="ID" />
</UpdateParameters>
</asp:SqlDataSource>
Pourriez vous s'il vous plaît inclure le balisage de la grille vous sont de liaison de données, ainsi que le code dans le code-behind de lier le réel de la grille? (C'est le contrôle qui abrite en fait le
J'ai mis à jour le balisage pour inclure les informations. J'ai dû laisser les autres champs, car ce DetailsView a beaucoup de champs. Le contrôle DetailsView source de données est remplie à partir de l'annotation, je suis en ajoutant à l'annonce originale pour vous. Aussi de nombreuses colonnes de la source de données de balisage ont été supprimés pour économiser de l'espace sur cette page.
TemplateField
.J'ai mis à jour le balisage pour inclure les informations. J'ai dû laisser les autres champs, car ce DetailsView a beaucoup de champs. Le contrôle DetailsView source de données est remplie à partir de l'annotation, je suis en ajoutant à l'annonce originale pour vous. Aussi de nombreuses colonnes de la source de données de balisage ont été supprimés pour économiser de l'espace sur cette page.
OriginalL'auteur Emad-ud-deen | 2012-12-04
Vous devez vous connecter pour publier un commentaire.
Essayer et de remplir votre DropDownList dans le DropDownList_Init gestionnaire d'événement.
Balisage:
Le code derrière devrait ressembler à quelque chose comme ça, je suis de plus en plus utilisé en C#, mais j'espère que vous comprenez le point:
OriginalL'auteur Denki