Заполнение ASP.Net DetailsView DropDownList значением по умолчанию при входе в режим добавления

Мы хотели бы заполнить DropDownList значением по умолчанию, которое получается из переменной, когда пользователь переходит в режим "Добавить" в ASP.Net DetailsView из файла кода VB.Net. Можете ли вы показать мне, как его заполнить?

Вот разметка для DropDownList, которую мы хотим заполнить:

<asp:TemplateField HeaderText="Class:" SortExpression="ClassID">
    <EditItemTemplate>
        <asp:DropDownList 
            ID="DropDownListClass" 
            Runat="server"
            DataSourceID="SqlDataSourceClasses"
            DataTextField = "ClassName"
            DataValueField="ID"
            SelectedValue='<%# Bind("ClassID") %>'
            ForeColor="Blue">
        </asp:DropDownList>

        <asp:RequiredFieldValidator ID="RequiredFieldValidatorEditClass" runat="server" ControlToValidate="DropDownListClass" 
            ErrorMessage="Please select a Class here." Font-Bold="True" Font-Italic="True" ForeColor="Red" 
            SetFocusOnError="True" Display="Dynamic">

        </asp:RequiredFieldValidator>

    </EditItemTemplate>

    <InsertItemTemplate>

        <asp:DropDownList 
            ID="DropDownListClass" 
            Runat="server"
            DataSourceID="SqlDataSourceClasses"
            DataTextField = "ClassName"
            DataValueField="ID"
            SelectedValue='<%# Bind("ClassID") %>'
            ForeColor="Blue">
        </asp:DropDownList>

        <asp:RequiredFieldValidator ID="RequiredFieldValidatorInsertClass" runat="server" ControlToValidate="DropDownListClass" 
            ErrorMessage="Please select a Class here." Font-Bold="True" Font-Italic="True" ForeColor="Red" 
            SetFocusOnError="True" Display="Dynamic">

        </asp:RequiredFieldValidator>
    </InsertItemTemplate>

    <ItemTemplate>
        <asp:DropDownList 
            ID="DropDownListClass" 
            Runat="server"
            DataSourceID="SqlDataSourceClasses"
            DataTextField = "ClassName"
            DataValueField="ID"
            SelectedValue='<%# Bind("ClassID") %>'
            Enabled="false"
            ForeColor="Blue"
            Font-Bold="true"> 
        </asp:DropDownList>
    </ItemTemplate>
</asp:TemplateField>

Мы используем это в файле code-behind для заполнения переменной, которая будет содержать значение по умолчанию:

Function GetValueFromDropDownListClassItem() As String

    Dim strValueToReturn As String
    Dim drpValue As DropDownList

    drpValue = DetailsView.FindControl("DropDownListClass")

    If String.IsNullOrEmpty(drpValue.Text) Then
        strValueToReturn = ""
    Else
        strValueToReturn = drpValue.SelectedItem.Text
    End If

    Return strValueToReturn
End Function

Мы просто хотим использовать это значение и предварительно выбрать DropDownList со значением из этой переменной.

1 ответ

Решение

Редактировать:

Вы имеете в виду, как это?

Protected Sub dropdown_DataBound(sender As Object, e As EventArgs)
    Dim list As DropDownList = TryCast(sender, DropDownList)
    Dim value as String = GetValueFromDropDownListClassItem()
    If list IsNot Nothing And value IsNot "" Then
        list.SelectedValue = value
    End If
End Sub

Старое сообщение: Пожалуйста, попробуйте следующее:

<asp:DropDownList 
    ID="DropDownListClass" 
    Runat="server"
    DataSourceID="SqlDataSourceClasses"
    DataTextField = "ClassName"
    DataValueField="ID"
    SelectedValue='<%# Bind("ClassID") %>'
    AppendDataBoundItems="True"
    ForeColor="Blue">
        <asp:ListItem Selected="True" Value="0">Please select</asp:ListItem>
</asp:DropDownList>

Обратите внимание, что AppendDataBoundItems true и listItem

Другие вопросы по тегам