datatablesearch无效

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了datatablesearch无效相关的知识,希望对你有一定的参考价值。

参考技术A 首先,改jquery.dataTables.js的源码
2. 然后,return$(_pluck( oSettings.aoColumns,'nTh') ).filter(':visible').length;这一步返回的是可见列的数量,改成return$(_pluck( oSettings.aoColumns,'nTh') )
3. 然后,length;就是返回所有列的数量。如果采取这种办法,请先保证不会影响其他功能

Tableview 更新'NSInternalInconsistencyException',原因:'无效更新:无效的行数?

【中文标题】Tableview 更新\'NSInternalInconsistencyException\',原因:\'无效更新:无效的行数?【英文标题】:Tableview update 'NSInternalInconsistencyException', reason: 'Invalid update: invalid number of rows?Tableview 更新'NSInternalInconsistencyException',原因:'无效更新:无效的行数? 【发布时间】:2013-02-18 07:10:19 【问题描述】:

是的,在类似的问题标题上,有很多关于堆栈溢出的问题。我读了所有这些,但我从来没有看到我的问题等同于它们。 现在我的问题是,如果我在单击第 0 节的 headerview 时更新表第 0 节有 3 行,然后再次单击相同的标题以从第 0 节中删除所有 3 行,这对我来说很好。但是如果我打开(用 3 行更新第 0 部分)然后我点击另一个标题部分(我想在第 0 部分之后打开的另一个部分)我的应用程序崩溃了。我的意思是,如果我单击其他部分,那么我的其他部分应该打开,而之前打开的部分应该关闭。查看我的插入和删除部分和行的代码,

 -(void)sectionHeaderView:(TableHeaderView*)sectionHeaderView sectionOpened:(NSInteger)section

self.sectionOpen = YES;
//Create an array containing data of rows and section which to be inserted in tableView.
NSMutableArray *dataInsertArray = [NSMutableArray arrayWithArray:[self.tableDataSourceDictionary objectForKey: [self.sortedKeys objectAtIndex:section]]];
NSInteger countOfRowsToInsert = [dataInsertArray count];

NSMutableArray *indexPathsToInsert = [[NSMutableArray alloc] init];
for (NSInteger i = 0; i < countOfRowsToInsert; i++) 
    [indexPathsToInsert addObject:[NSIndexPath indexPathForRow:i inSection:section]];

[self.tableContents setObject:dataInsertArray forKey:[self.sortedKeys objectAtIndex:section]];

//Create an array containing data of rows and section which to be delete from tableView.
NSMutableArray *indexPathsToDelete = [[NSMutableArray alloc] init];
NSInteger previousOpenSectionIndex = self.openSectionIndex;
if (previousOpenSectionIndex != NSNotFound )  

    self.sectionOpen = NO;
    [previousTableHeader toggleOpenWithUserAction:NO];
    NSInteger countOfRowsToDelete = [[self.tableContents objectForKey: [self.sortedKeys objectAtIndex:section]] count];
    for (NSInteger i = 0; i < countOfRowsToDelete; i++) 
        [indexPathsToDelete addObject:[NSIndexPath indexPathForRow:i inSection:previousOpenSectionIndex]];
    

    [self.tableContents removeObjectForKey:[self.sortedKeys objectAtIndex:previousOpenSectionIndex]];


// Apply the updates.
[self.tableView beginUpdates];
[self.tableView deleteRowsAtIndexPaths:indexPathsToDelete withRowAnimation:UITableViewRowAnimationFade];
[self.tableView insertRowsAtIndexPaths:indexPathsToInsert withRowAnimation:UITableViewRowAnimationFade];
[self.tableView endUpdates];

self.openSectionIndex = section;
self.previousTableHeader = sectionHeaderView;

还有我的数据源方法,

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
NSInteger numberOfSection = [self.sortedKeys count];
return numberOfSection;


- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
NSArray *listData =[self.tableContents objectForKey: [self.sortedKeys objectAtIndex:section]];
NSInteger numberOfRows = [listData count];
return numberOfRows;

我的崩溃报告, -[UITableView _endCellAnimationsWithContext:] 中的断言失败,/SourceCache/UIKit_Sim/UIKit-2372/UITableView.m:1070 2013-02-18 11:44:49.343 ManageId[1029:c07] 由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“无效更新:第 0 节中的行数无效。之后现有节中包含的行数更新 (0) 必须等于更新 (3) 之前该节中包含的行数,加上或减去从该节插入或删除的行数(0 插入,1 删除)加上或减去数字移入或移出该部分的行数(0 移入,0 移出)。'

假设我的 2 个部分包含 3 - 3 行,那么它将工作文件但是如果 2 个部分包含 3 - 2 行,那么它会崩溃。我想切换两个部分,点击更新这些部分中行数不一致的部分的标题。

【问题讨论】:

尝试先删除行,结束更新,然后插入新更新的行。或者使用 reloadData 方法,它会根据数据源值自动添加删除行。 @fibnochi,我已经做了各种方法。但没有成功。 尝试插入,然后删除行。这样会先添加行数,然后删除。 再试试不带动画的更新。 【参考方案1】:

我发现请将您的代码中的该代码替换为该代码。您必须使用旧索引而不是当前索引删除数据.... 注释行是您的,请检查...

if (previousOpenSectionIndex != NSNotFound)
 self.sectionOpen = NO; 
 [previousTableHeader toggleOpenWithUserAction:NO];

//NSInteger countOfRowsToDelete = [[self.tableContents objectForKey: [self.sortedKeys objectAtIndex:section]] count];
NSInteger countOfRowsToDelete = [[self.tableContents objectForKey: [self.sortedKeys objectAtIndex:previousOpenSectionIndex]] count];   

for (NSInteger i = 0; i < countOfRowsToDelete; i++) 
[indexPathsToDelete addObject:[NSIndexPath indexPathForRow:i inSection:previousOpenSectionIndex]];
 

[[self.tableContents objectForKey: [self.sortedKeys objectAtIndex:previousOpenSectionIndex]] removeAllObjects];  

【讨论】:

以上是关于datatablesearch无效的主要内容,如果未能解决你的问题,请参考以下文章

对DataTable进行分组

c# datarow[] 转换成 datatable

更新后如何连续刷新datagridview

向量化:数据表 R

fread showProgress作为消息

DataGrid 的自动填充功能