我正在努力解决一个我只能找到解决方案的问题。
首先,我不能使用 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 中的值保存回数据库?
到目前为止,我尝试了几种方法,但都没有成功。
在 update() 方法中,通过 FindControl 和 set 查找控件
e.Command.Parameter["xyz"] = foundcontrol.SelectedValue;
。值始终与开始时相同。设置
<asp:parameter name="SampleValue" />
并在 EditTemplate 中<asp:TextBox Value='<%# Bind("SampleValue")#>
的值始终为 null。通过 javascript 使用所选值设置隐藏输入字段。这不起作用,因为 EditTemplate 中的控件仅在切换到编辑模式后可见
所以也许我的想法完全错误,走向一个完全错误的方向,这可以更容易地完成,但到目前为止我不知道如何实现这一点。我可以不使用 ajax,但为了用户体验,我更喜欢带有 jquery 的版本。
对于所有已经阅读到这里并且没有感到困惑的人:-),感谢您的努力!
此致,
安德烈亚斯