2

我们偶尔会收到报告,其中 GridView 中的一组 DropDownBox 的值将重置为列表中的第一个值项。

我们最终将其归结为一个时间问题,即用户在页面完成渲染/加载数据之前单击“保存”,我们能够在生产服务器上复制它,但不能在本地复制,因为页面加载太快。

我们如何在服务器端检测到这一点,以知道返回的数据是无效的,或者停止设置用户未设置的数据?

4

2 回答 2

1

是否考虑过仅在加载页面时才启用保存按钮?

另一个建议...下拉列表有ID吗?我有一些奇怪的问题,动态生成的控件没有id,回发后返回错误的值......

于 2010-10-18T19:29:16.973 回答
0

我遇到过同样的问题。在本地工作得很好,但偶尔的生产用户会以某种方式提交带有部分表单数据的页面。

从日志中我可以看到 HttpRequestFormVariables 看起来正常,然后值变成空白,这导致站点抛出未处理的异常。

ctl00$MainContentPlaceHolder$foo$rptForm$ctl01$txtFormFieldId = 3815 ctl00$MainContentPlaceHolder$foo$rptForm$ctl02$txtFormFieldId = 3816 ctl00$MainContentPlaceHolder$foo$rptForm$ctl03$txtFormFieldId = 3817 ctl00$MainContentPlaceHolder$foo$rptIdField$ctl = 3818 ctl00$MainContentPlaceHolder$foo$rptForm$ctl05$txtFormFieldId = ctl00$MainContentPlaceHolder$foo$rptForm$ctl05$txtFormFieldId =

我能够重现它的唯一方法是在页面中添加一些 Javascript 以使其在完全加载之前提交。

<script type="text/javascript">
    $("input[id$='btnSubmit']").click();
</script>

我怀疑我需要在禁用状态下从服务器发回 btnSubmit,然后在页面完成加载后从 Javascript 启用它。

if (btnSubmit.Enabled)
{
        btnSubmit.Enabled = false;
        string script = "$(document).ready(function() {$(\"input[id$='" + btnSubmit.ClientID + "']\").removeAttr('disabled');});";
        this.Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "EnableSubmitButton", script, true);
}
于 2012-08-29T03:55:20.567 回答