将InsertItemTemplate中的文本框替换为下拉列表
本文关键字:替换 下拉列表 文本 InsertItemTemplate | 更新日期: 2023-09-27 18:12:43
我认为这将是简单和直接的,但我似乎有一个问题。
基本上,我在formview中有这个:
<asp:TextBox ID="StatusTextBox" runat="server" Text='<%# Bind("Status") %>' />
我想用这个替换它:
<asp:DropDownList ID="StatusDropdown" runat="server">
<asp:ListItem Selected="True" Value="A">Active</asp:ListItem>
<asp:ListItem Value="I">Inactive</asp:ListItem>
</asp:DropDownList>
我不太确定如何像绑定文本框一样绑定这个。
有一个直接的答案吗?
代码隐藏不是一个hack,实际上它是最好的实践,因为你有完全的控制和编译器的支持(显示错误在编译时,避免粗心的错误)
例如(假设DropDownList
在EditItemTemplate
中):
private void FormView1_DataBound(object sender, System.EventArgs e)
{
switch (FormView1.CurrentMode)
{
case FormViewMode.ReadOnly:
break;
case FormViewMode.Edit:
// note that the DataSource might be a different type
DataRowView drv = (DataRowView)FormView1.DataSource;
DropDownList StatusDropdown = (DropDownList)FormView1.FindControl("StatusDropdown");
// you can also add the ListItems programmatcially via Items.Add
StatusDropdown.DataSource = getAllStatus(); // a sample method that returns the datasource
StatusDropdown.DataTextField = "Status";
StatusDropdown.DataValueField = "StatusID";
StatusDropdown.DataBind();
StatusDropdown.SelectedValue = drv["StatusID"].ToString();
break;
case FormViewMode.Insert:
break;
}
}
将其绑定到SelectedValue属性,如下所示:
<asp:DropDownList ID="StatusDropdown" runat="server" SelectedValue='<%# Bind("Status") %>'>
status中的值必须匹配下拉列表项的值