我们在ASP.Net / VB.Net Web表单的标记中有一个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>
解决方法
尝试在DropDownList_Init事件处理程序中填充DropDownList.
标记:
<asp:DropDownList ID="ddlTheDropDownList" runat="server" OnInit="ddlTheDropDownList_Init">
后面的代码应该看起来像这样,我更习惯于C#,但我希望你明白这一点:
Protected Sub ddlTheDropDownList_Init(sender As Object,e As EventArgs) Dim ddl As DropDownList ddl = sender As DropDownList ddl.Datasource = theClassesTableAdapter.GetDataByAllClasses ddl.DataTextField = "ClassName" ddl.DataValueField = "ClassID" ddl.SelectedValue = "ClassID" ddl.DataBind() End Sub
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。