Заполнение 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