2012-03-05 76 views
2

我有一个gridview复选框控件作为模板字段和一个有界域.. 网格绑定在每一个回传通过一个函数和网格内容保持相同的每个帖子back ..现在什么时候我检查其中一个复选框,然后单击页面末尾的按钮,我需要存储该特定的行信息..但我无法检索该信息,因为当我检查然后单击按钮..页面加载,然后网格再次填充,然后复选框变得不勾选,并且没有CheckedChanged事件触发..与我联系 我需要在每次回发时保持复选框的状态,即使它被检查..如何执行此操作?gridview中的复选框控件

+0

您是否必须在每次回发时绑定网格? – pavanred 2012-03-05 05:57:24

回答

0

这是可能的,如果你正在使用asp.net 4.0使用

<asp:GridView id="GridView2" runat="server" EnablePersistedSelection="true"> 
</asp:GridView> 

如果使用的是3.5,你将不得不保留viewstatecheckbox信息。我希望这会有所帮助。

http://www.codeproject.com/Articles/202938/How-to-select-multiple-records-from-the-GridView-a

另一种选择:

这是MSDN如何描述一个hotmail类型的GridView ..可能是这可以帮助..这将要求您扩展现有的GridView控件。 http://msdn.microsoft.com/en-us/magazine/cc163612.aspx

问候。

+0

我正在使用asp.net 3.5,并且我正在多个dropdownlist控件上对服务器进行多次回发..现在我想要从网格中选择一些复选框,然后单击最后的按钮..网格应显示为在page_load之后检查选定的,但这并没有发生,因为在page_load上绑定数据的函数被调用,并且复选框被取消选中..i认为它可能只有当我不做回发和在网格上使用javascript控制.. – user1249061 2012-03-05 06:37:25

+0

Ajax是一个选项,但它将需要改变你当前处理事件的方式..有一件事要问你是否将复选框绑定到某个dataitem元素?你真的需要数据绑定复选框吗? – 2012-03-06 08:31:16

+0

请检查我通过扩展gridview控件添加了另一个选项..希望这会有所帮助 – 2012-03-06 08:33:32

0

page_load事件功能,请使用如下代码为持久性数据

if (!IsPostBack) 
{ 
    //your static data 
} 
+0

但回发是发生多次,网格应该在每个回传中都可见..如果我调用我的函数,它只绑定数据if (!IsPostBack)网格将在以后的回传中变得不可见。 – user1249061 2012-03-05 06:39:47

0

这个特殊的问题是相当普遍的。我还没有看到任何“简单”的解决方案,但这里有3个我已经使用的独立方法。由于系统中的限制,每个都被使用。

解决方案1 ​​
使用AJAX。通过将控件放置在更新面板中,您可以通过在数据库中实现“实时”来保存更改。这不是一个“简单”的解决方案,但在我看来这是最容易实现的解决方案之一。由于这种变化是立竿见影的,因此没有必要担心后备和持久性。

解决方案2
使用“变更管理”控件进行排序。您可以应用一个隐藏的控件,其值用于跟踪相关控件中所做的任何更改。您需要设计一个连贯的数据结构,以提供至少一个控制ID和新值(如果需要某种“回滚”功能,可能是旧值)。这需要使用JavaScript进行编码,以便隐藏控件值的任何更改都是结构化的,而不是重复的。然后在回发中,您需要阅读此控件的值,进行任何相关更改,然后根据需要重新绑定您的数据。这可能相当麻烦,并且如果您将此应用程序传递给继任者,则需要详细记录。

解决方案3
使用回传的CheckChanged事件,并保持在视图状态管理的所有数据。在GridView的RowItemCreated事件期间,您可以在相关单元中找到复选框控件,并手动将委托处理程序添加到该控件以处理发生CheckChanged事件触发事件时的回发。然后您可以立即更改。这个缺点是PostBack事件变得频繁和沉重。如果您在ViewState中存储大量数据,这也会导致页面加载速度缓慢且无法响应,因此无论您为ViewState选择哪种结构,都需要保持较小。