我有两个按钮,预览和保存。借助预览按钮,用户可以根据格式查看数据,然后可以保存。
但是,当单击预览时,附加到ajaxcontrol(日历)的一个文本框变为空,用户必须在保存之前填写日期。怎么办呢?在预览时单击我获取详细信息以在布局中显示数据。
<asp:TextBox ID="txtDate" ReadOnly="true" runat="server"></asp:TextBox>
<div style="float: right;">
<asp:ImageButton ID="imgcalender1" runat="server" ImageUrl="~/images/calendar.png"
ImageAlign="Bottom" />
<asp:CalendarExtender ID="ajCal" TargetControlID="txtpublishDate" PopupButtonID="imgcalender1"
runat="server">
</asp:CalendarExtender>
<asp:RequiredFieldValidator ID="RequiredFieldValidator2" ValidationGroup="group1" runat="server" ControlToValidate="txtDate"
ForeColor="Red" Font-Bold="true" ErrorMessage="*"></asp:RequiredFieldValidator>
</div>
<asp:Button ID="btnPreview" runat="server" Text="Preview" OnClick="btnPreview_Click" />
<asp:Button ID="btnsubmit" runat="server" ValidationGroup="group1" Text="Save" OnClick="btnsubmit_Click" />
答案 0 :(得分:15)
在aspx代码(服务器端)中使用Page.IsPostback()。像这样:
private void Page_Load()
{
if (!IsPostBack)
{
// the code that only needs to run once goes here
}
}
此代码仅运行页面加载的第一个时间,并避免踩到用户输入的表单更改。
答案 1 :(得分:8)
据我所知,预览按钮导致回发而您不想要,请在预览按钮上尝试:
<asp:button runat="server".... OnClientClick="return false;" />
同样这也有效:
YourButton.Attributes.Add("onclick", return false");
编辑:
似乎用户问题的答案是在预览按钮的HTML标记中进行了简单的更改
CausesValidation="False"
答案 2 :(得分:3)
您可以将代码放入
Page_Init()
{
//put your code here
}
而不是
Page_Load()
{
//code
}
答案 3 :(得分:2)
我有同样的问题和上面的解决方案“CausesValidation =”False“”甚至添加“UseSubmitBehavior =”False“”DID NOT work - 它仍然称为“Page_Load”方法。
对我有用的是在Page_Load方法中添加以下行。
if (IsPostBack) return;
我提到这个,如果它可以帮助某人(我的意思是上面的评论,但StackOverflow不允许我发表评论,因为我是一个新用户 - 因此是一个新的回复)。
答案 4 :(得分:1)
尝试将此添加到aspx页面中的按钮属性。
OnClientClick="return false;"
答案 5 :(得分:-1)
form1.Action = Request.RawUrl;
在页面加载时编写此代码,然后页面不会在按钮单击上回发