我正在努力解决一个问题,我可以找到解决方案。
首先,我不能使用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中的值保存回数据库?
到目前为止,我尝试了几种方法,但没有成功。
在updates()方法中,通过FindControl查找控件并设置e.Command.Parameter["xyz"] = foundcontrol.SelectedValue;
。值始终与开头的值相同。
设置<asp:parameter name="SampleValue" />
并在EditTemplate中<asp:TextBox Value='<%# Bind("SampleValue")#>
值始终为空。
通过javascript设置带有所选值的隐藏输入字段。这不起作用,因为EditTemplate中的控件仅在切换到编辑模式后可见
所以也许我对我的想法完全错了,走向一个完全错误的方向,这可以更容易实现,但到目前为止我还不知道如何实现这一目标。我可以在没有ajax的情况下做到这一点,但是对于用户体验,我更喜欢带有jquery的版本。
对于所有已经阅读过这一点且没有感到困惑的人:-),谢谢你的努力!
致以最诚挚的问候,
安德烈亚斯
答案 0 :(得分:1)
我会忘记使用表单视图,只使用常规输入控件的常规html表单。从Web服务返回一个具有所有值的对象,并使用ajax填充控件,然后使用ajax进行subjmit。使用asmx后端完全使用asp.net或完全html / jquery。否则它太混乱了。
答案 1 :(得分:0)
如果使用AJAX将FormView的两个“模式”加载到同一页面中,您可能会获得重复的字段名称。其中一个包含正在保存的未更改的值。 ASP.NET将如何知道其中的区别?您只想提交EditTemplate中的那些,这将需要一个单独的表单(或其他一些黑客)。
或者你的HTML提交按钮可能没有给ASP.NET重新填充控件所需的内容。您是否在具有FormView的页面中使用ViewState?
总而言之,这听起来像是一种多毛的技术组合......如你所知。