我在detailsview控件中有一個下拉列表。數據源是一個含有一個月日的列的SQL表。ASP如何在detailsview中綁定下拉列表的選定值
<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>
我在DataBound事件中填充了數字1 - 31的下拉列表。
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()));
我如何可以將綁定在下拉列表來更新數據源中的值發生變化的時候?我已嘗試將所選值屬性設置爲<%# Bind("dayofthemonth") %>
,但我收到一個OutOfRangeException。我假設列表尚未填入切換到編輯模式。
對此有何看法?讓我知道你是否需要更多的代碼。
這有什麼好使用經典的ASP - 請重新標記爲ASP.NET。 – Paul
我的錯誤,感謝捕獲 –