【发布时间】:2015-12-06 18:50:57
【问题描述】:
我在 detailsview 控件中有一个下拉列表。数据源是一个带有 dayofthemonth 列的 SQL 表。
<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。
-
我的错误,感谢您的关注
标签: c# asp.net data-binding detailsview