微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在代码隐藏文件中使用VB.Net编码填充ASP.Net DropDownList

我们在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 举报,一经查实,本站将立刻删除。

相关推荐