【发布时间】:2011-10-28 17:25:04
【问题描述】:
我有一个 DataTable,它在我的课程开始时声明如下:
private DataTable table = new TestData().FillTable();
在整个课程中,我都可以访问表格的内容。
但是,我有一个 GridView 排序事件,它会更改 DataTable 的内容。在事件本身中,内容发生了变化,我已经通过调试确认了这一点。但是,如果我从该方法之外的任何地方调用该表,DataTable 的内容将保持原样,即一旦 soerting 事件的范围结束,新值似乎会被删除。
这是我的排序事件的代码:
protected void TableGridView_Sorting(object sender, GridViewSortEventArgs e)
{
table.DefaultView.Sort = "GroupNumber, " + e.SortExpression + GetSortDirectio(e.SortExpression);
TableGridView.DataSource = table;
TableGridView.DataBind();
}
当我在上述事件中测试表的内容时,似乎添加了新值。但是,如果我从任何其他方法调用该表,则会返回旧值。
我可以做些什么来使表格的内容全局更新,即更新到在我的类开始时声明的变量,并且不会因方法而具有不同的状态?
【问题讨论】:
-
您使用 this.table 有什么特别的原因吗?如果它是一个类变量,只需使用它就可以了。但同样,这不是我想的答案。试试看嘛。该死的,我希望我有一个 IDE 可以在这里工作:(
-
我也试过不使用 'this',还是不行:/
-
奇怪,连 MSDN 都说创建并返回了一个新的 DT。
-
我已经调试过无数次了——每次,排序事件中都会出现表格的差异,但是一旦范围结束,更改并没有保存。这让我发疯 - 不知何故,我认为我做错了什么
-
所有文章都说 ToTable 创建了一个新表并将信息保存在 DT 上,而不仅仅是 Table 方法。嘿顺便说一句,您从表中创建的视图。所以视图有点链接到表,你更新到表回来。我看到这里有些可疑。
标签: c# .net asp.net oop datatable