2009-09-01 75 views
0

我正在为一个问题苦苦挣扎,我只能找到一个解决方案。asp.net 2.0:使用jquery更新formview

首先,我不能使用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方法中,我查找包含要保存的值的控件。但是,当我切换到编辑视图时,这些值始终是相同的。我保留的文本框或下拉列表中没有任何更改。

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

到目前为止,我尝试了几个方案,但没有成功。

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

  2. 设置<asp:parameter name="SampleValue" />并在EditTemplate中<asp:TextBox Value='<%# Bind("SampleValue")#>这些值始终为空。

  3. 通过javascript设置一个带有选定值的隐藏输入字段。这不起作用作为内EditTemplate控制是开关进入编辑模式

所以也许我完全错了我的想法,标题变成一个完全错误的方向,这可以实现更容易后才可见,但到现在为止我不知道如何实现这一点。我可以做到没有Ajax,但为了用户体验,我更喜欢jQuery版本。

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

最好的问候,

安德烈亚斯

+0

我忘了。某些编辑项目由另一个DataSource中的DropDowns填充,并且值应该写入另一个数据库表中,而不是数据源自的视图。 –

回答

0

如果加载两个FormView控件的“模式”到同一页面上,使用AJAX,你可能会得到重复的字段名。其中一个包含正在保存的未更改的值。 ASP.NET如何知道它们的区别?你只需要提交EditTemplate中的那个,这需要一个单独的表单(或者其他一些黑客)。

或者您的HTML提交按钮不提供ASP。NET它需要重新填充控件。你是否在FormView中使用ViewState?

总而言之,这听起来像是一个多毛的技术组合......正如你所知道的。

1

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