У меня есть раскрывающийся список в элементе управления представлением деталей. Источником данных является таблица SQL с дневным столбцом.ASP Как связать выбранное значение выпадающего списка в подробном представлении
<asp:TemplateField HeaderText="Day of Month: ">
<EditItemTemplate>
<asp:DropDownList ID="ddlDoM" runat="server" >
</asp:DropDownList>
</EditItemTemplate>
<InsertItemTemplate>
<asp:TextBox ID="TextBox6" runat="server" Text='<%# Bind("dayofthemonth") %>'></asp:TextBox>
</InsertItemTemplate>
<ItemTemplate>
<asp:Label ID="Label7" runat="server" Text='<%# Bind("dayofthemonth") %>'></asp:Label>
</ItemTemplate>
<HeaderStyle Font-Bold="True" />
</asp:TemplateField>
Я заполнил выпадающий список номерами 1 - 31 в событии DataBound.
protected void DataView1_DataBound(object sender, EventArgs e)
{
DropDownList ddlDoM = (DropDownList)Page.FindControl("ctl00$formPlaceHolder$DataView1$ddlDoM");
if (DataView1.CurrentMode == DetailsViewMode.Edit)
{
for (int i = 1; i < 32; i++)
{
ListItem item = ListItem.FromString(i.ToString());
ddlDoM.Items.Add(item);
}
}
DataRowView drv = DataView1.DataItem as DataRowView;
ddlDoM.SelectedIndex = ddlDoM.Items.IndexOf(ddlDoM.Items.FindByValue(drv["dayofthemonth"].ToString()));
}
}
В последней строке здесь я устанавливаю выбранное значение раскрывающегося списка в текущее значение источника данных.
ddlDoM.SelectedIndex = ddlDoM.Items.IndexOf(ddlDoM.Items.FindByValue(drv["dayofthemonth"].ToString()));
Как я могу связать DropDownList обновить значение в источнике данных при изменении? Я попытался установить значение выбранного значения на <%# Bind("dayofthemonth") %>
, но я получаю исключение OutOfRangeException. Я предполагаю, что список еще не заселен при переключении в режим редактирования.
Любые мысли по этому поводу? Дайте мне знать, если вам нужно больше кода.
Это не имеет ничего делать с классическим ASP - пожалуйста, повторите тег для ASP.NET. – Paul
моя ошибка, спасибо за ловлю –