【问题标题】:asp.net 2.0: update formview with jqueryasp.net 2.0:使用 jquery 更新 formview
【发布时间】:2010-02-23 06:00:04
【问题描述】:

我正在努力解决一个我只能找到解决方案的问题。

首先,我不能使用 asp.net AJAX 或标准 asp.net 2.0 以外的任何东西,因为服务器管理员不会安装任何其他东西。

这就是我尝试做的事情。 (对于好奇,请跳到下面的粗体问题

我的页面由几个部分组成,每个部分都由 jquery.load(url) 加载。其中一个页面部分填充了一个包含表单视图的 aspx。由于我不想有回发,我通过简单地点击一个常规的 html 按钮切换到表单视图的 EditTemplate,该按钮提交一个参数,指示 aspx 页面切换到编辑模式,例如

Page_Load(...)
{
   if(Request.Params["SwitchEditMode"]) SwitchEditMode();
}

这很完美!现在这里是我卡住的部分。 EditTemplate 中的元素基于从数据库视图中选择并通过<%# Bind("xx") 绑定到字段。然后我有一个 html 按钮(没有 asp 控件),它向 aspx 页面提交一个参数,告诉它调用 DataSource 更新方法。在 dataSource_updating 方法中,我查找包含我要保存的值的控件。但是这些值总是相同的,就像我切换到编辑视图时一样。我在文本框或下拉列表中所做的任何更改都不会保留。

长话短说,问题是如何使用 jquery 将 EditTemplate 中的值保存回数据库?

到目前为止,我尝试了几种方法,但都没有成功。

  1. 在updated() 方法中通过FindControl 查找控件并设置e.Command.Parameter["xyz"] = foundcontrol.SelectedValue;。值始终与开始时相同。

  2. 设置<asp:parameter name="SampleValue" /> 和EditTemplate 中的<asp:TextBox Value='<%# Bind("SampleValue")#> 值始终为null。

  3. 通过 javascript 使用所选值设置隐藏输入字段。这不起作用,因为 EditTemplate 中的控件仅在切换到编辑模式后可见

所以也许我的想法完全错误,走向一个完全错误的方向,这可以更容易实现,但到目前为止我不知道如何实现这一点。我可以不使用 ajax,但为了用户体验,我更喜欢带有 jquery 的版本。

对于所有已经阅读到这里并且没有感到困惑的人:-),感谢您的努力!

最好的问候,

安德烈亚斯

【问题讨论】:

  • 我忘记了什么。一些编辑项由来自另一个 DataSource 的 DropDowns 填充,并且应该将值写入另一个数据库表,而不是数据源自的视图。

标签: asp.net jquery formview


【解决方案1】:

我会忘记使用表单视图,而只使用带有常规输入控件的常规 html 表单。从您的 Web 服务返回一个包含所有值的对象,并使用 ajax 填充控件,然后使用 ajax 提交。要么完全使用 asp.net,要么完全使用 asmx 后端的 html/jquery。否则太混乱了。

【讨论】:

    【解决方案2】:

    如果您使用 AJAX 将 FormView 的两种“模式”加载到同一页面中,您可能会得到重复的字段名称。其中之一包含正在保存的未更改值。 ASP.NET 如何知道其中的区别?您只想提交来自 EditTemplate 的那些,这需要单独的表单(或其他一些技巧)。

    或者您的 HTML 提交按钮可能没有为 ASP.NET 提供重新填充控件所需的内容。您是否在带有 FormView 的页面中使用 ViewState?

    总而言之,这听起来像是技术的复杂组合……众所周知。

    【讨论】:

      猜你喜欢
      • 2021-01-15
      • 1970-01-01
      • 1970-01-01
      • 2016-07-16
      • 2014-05-15
      • 1970-01-01
      • 2014-03-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多