我有一个带有复选框控件的gridview作为模板字段和一个有界字段。 网格通过一个函数绑定在每个回发上,并且网格内容在每个帖子后面都保持不变..现在,当我选中其中一个复选框,然后单击页面末尾的按钮时,我需要存储该特定行信息..但我无法检索该信息,因为当我检查然后单击按钮...页面加载然后网格再次填充,然后复选框变为取消选中并且没有CheckedChanged事件触发..帮助我这个 我需要在每次回发时都保持复选框的状态,即使它被检查了......如何做到这一点??
答案 0 :(得分:0)
如果您使用
使用asp.net 4.0,则可以使用此功能<asp:GridView id="GridView2" runat="server" EnablePersistedSelection="true">
</asp:GridView>
如果您使用的是3.5,则必须在checkbox
中保留viewstate
个信息。我希望这会有所帮助。
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
问候。
答案 1 :(得分:0)
在page_load
事件函数中,请使用以下代码作为持久数据
if (!IsPostBack)
{
//your static data
}
答案 2 :(得分:0)
这个特殊问题很常见。我还没有看到任何“简单”的解决方案,但这里有3种不同的方法。由于系统的限制,每个都被使用。
解决方案1
使用AJAX。通过将控件放在更新面板中,您可以通过在数据库中“实时”进行更改来保留更改。这不是一个“简单”的解决方案,但在我看来,它是最容易实现的解决方案之一。由于更改是伪造的,因此没有必要担心回发和持久性。
解决方案2
使用各种“变更管理”控制。您可以应用隐藏控件,其值用于跟踪相关控件中所做的任何更改。您需要设计一个连贯的数据结构,至少提供一个控件ID和新值(如果您需要某种“回滚”功能,可能是旧值)。这需要在JavaScript中编码,以便隐藏控件值的任何更改都是结构化的而不是重复的。然后在回发时,您需要读取此控件的值,进行任何相关更改,然后根据需要重新绑定数据。这可能相当麻烦,如果您将此应用程序传递给后继者,则需要对其进行详细记录。
解决方案3
使用PostBack for CheckChanged事件并将所有数据保持在视图状态。在GridView的RowItemCreated事件期间,您可以在相关单元格中找到复选框控件,并手动将委托处理程序添加到该控件,以便在CheckChanged事件触发时处理回发。然后,您可以立即进行更改。这样做的缺点是PostBack事件变得频繁和沉重。如果您在ViewState中存储大量数据,这也会导致页面加载缓慢且无响应,因此无论您为ViewState选择何种结构,您都希望将其保持较小。