4
在ASP.Net/VB.Net Web窗體的標記中有一個DropDownList。在代碼隱藏文件中使用VB.Net編碼填充ASP.Net DropDownList
我們想要使用DataSet設計器創建的DataSet中的數據填充DropDownList,但我們在代碼隱藏文件中使用的編碼沒有使用FindControl查找DropDownList ID。
你可以檢查我的編碼,讓我知道我還需要做些什麼來獲得DropDownList填充?
標記將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>
在代碼隱藏文件編碼:
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
在DetailsView的DataSouce的標記:
<% '-- 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>
能否請您包括完整的標記對於你所使用的網格數據綁定,以及代碼後面的代碼綁定到實際的網格? (這是實際上包含'TemplateField'的控件, – mclark1129
我更新了標記以包含信息,因爲這個DetailsView有很多字段,所以我必須省略其他字段,DetailsView數據源從標記I'爲您添加原始發佈內容,同時還刪除了DataSource標記中的許多列,以節省此發佈的空間。 –