Asp.net 同一绑定属性的两个不同控件?
我正在尝试创建一个FormView,它在EditTemplate中可以显示一个文本框或一个绑定属性的下拉列表,基于一些其他标志:Asp.net 同一绑定属性的两个不同控件?,asp.net,webforms,asp.net-4.0,Asp.net,Webforms,Asp.net 4.0,我正在尝试创建一个FormView,它在EditTemplate中可以显示一个文本框或一个绑定属性的下拉列表,基于一些其他标志: <asp:FormView id="EmailFormView" runat="server" DefaultMode="Edit" DataSourceID="EmailDataSource" OnDataBound="EmailFormView_DataBound" > <EditItem
<asp:FormView
id="EmailFormView"
runat="server"
DefaultMode="Edit"
DataSourceID="EmailDataSource"
OnDataBound="EmailFormView_DataBound"
>
<EditItemTemplate>
<asp:PlaceHolder ID="DelayHoursPlaceHolder" runat="server">
<asp:TextBox CssClass="HoursBox" ID="ShortDelayTextBox" runat="server" Text='<%# Bind( "ShortDelay" ) %>' />
</asp:PlaceHolder>
<asp:PlaceHolder ID="DelayDropdownPlaceHolder" runat="server">
<asp:DropDownList ID="ShortDelay" runat="server" SelectedValue='<%# Bind( "ShortDelay" ) %>'
DataValueField="Value" DataTextField="Text" DataSourceID="DropDownDataSource" />
</asp:PlaceHolder>
</EditItemTemplate>
</asp:FormView>
这可以很好地显示和隐藏适当的控件,但问题是当页面被发回时,值正在丢失
关于如何使其工作,有什么想法吗?请确保在
页面加载事件中,仅在首次加载页面时绑定下拉列表,如下所示:
protected void Page_Load(object sender, EventArgs e)
{
if(!PostBack)
{
// Bind drop down list here
}
}
显示正在对FormView
执行数据绑定的代码。您需要确保回发后不会重新绑定。也就是说,如果(!IsPostBack){}
,它将被包装在中。
protected void Page_Load(object sender, EventArgs e)
{
if(!PostBack)
{
// Bind drop down list here
}
}