KendoUI添加的扩展方法(ToDataSourceResult)似乎在Pages> Page#1上失败.它在第一次加载页面时工作正常,但是当我尝试使用它进行虚拟滚动时,为了获取页面,2,3,4 ... N异步,该方法忽略了我正在尝试的IEnumerable对象中的所有数据改造.
我的代码如下:
我有一个MVC控制器,可以像这样获取数据:
Database database = Database.GenerateDatabase();
ResultSet queryResults = database.GetEvents(
FilterHelper.GenerateQueryCriteria((List<IFilterDescriptor>) request.Filters, request.Page, request.PageSize)
);
Run Code Online (Sandbox Code Playgroud)
Database.GetEvents返回一个对象,如下所示:
public class ResultSet {
public List<ResultSetRow> Set;
public int PageRowCount;
public int TotalRecordCount;
}
Run Code Online (Sandbox Code Playgroud)
每个ResultSetRow,是一个具有1个字符串,2个int作为属性的类的实例.
此时,我设置了一个断点并检查ResultSet.Set的内容.数据库使用request.PageSize指定的记录正确填充List.我已确认正在为任何和所有页码返回结果.
下一阶段,一切都很糟糕:
DataSourceResult result = ((IEnumerable<ResultSetRow>) queryResults.Set).ToDataSourceResult(request);
Run Code Online (Sandbox Code Playgroud)
我检查DataSourceResult对象的内容,其数组属性'Data'为空.
为什么我的模型(ResultSetRow)无法转换为Kendo的DataSourceResult对象?
一些额外的信息:
感谢您的帮助SO社区
通过提前分配堆内存并增量填充它是否可以大幅提高性能?
考虑下面非常简单的例子:
byte * heapSpace = malloc (1 000 000);
int currentWriteSpot = 0;
struct A {
int x;
byte * extraSpace;
int extraSpaceLength;
};
//a1 needs 10 bytes of extra storage space:
A a1;
a1.x = 2;
a1.extraSpace = heapSpace + currentWriteSpot;
a1.extraSpaceLength = 10;
currentWriteSpot += 10;
//a2 needs 120 bytes of extra storage space:
A a2;
a2.x = 24;
a2.extraSpace = heapSpace + currentWriteSpot;
a2.extraSpaceLength = 120;
currentWriteSpot += 120;
// ... many more elements added
for …Run Code Online (Sandbox Code Playgroud) 使用ARM,C编译器,我可以成功编译并运行以下代码:
static char * myString = 0;
void myfunc(int x){
if (x <= 0)
myString = "Hello World";
else
myString = "This is a different string with a different length";
}
int main(){
myfunc(-1);
printf("%s\n", myString);
myfunc(2);
printf("%s\n", myString);
}
Run Code Online (Sandbox Code Playgroud)
为什么这样做?
指针不应该是NULL指针吗?
至少,不应该在只读内存位置分配字符串文字吗?
编辑:它是一个C++编译器
EDIT2:为什么在myfunc超出范围后,字符串文字存在于静态范围内?字符串文字是否未在堆栈中声明?什么时候他们被解除分配?
谢谢!
我出现了一个非常奇怪的链接器错误:
link.exe : fatal error LNK1107: invalid or corrupt file: cannot read at 0x270
Run Code Online (Sandbox Code Playgroud)
但这很奇怪,因为通常错误消息会告诉您哪些对象无效或已损坏.换句话说,通常此错误消息看起来像这样:
myDLL.dll : fatal error LNK1107: ....
Run Code Online (Sandbox Code Playgroud)
但是,在这种情况下,无效对象是正在运行的应用程序本身(link.exe)!
我已经尝试用另一个我知道有效的副本替换可执行文件.同样的错误.
我正在运行的命令是这样的:
../vendor/microsoft/msdev80_2005/VC/bin/link.exe /NOLOGO /SUBSYSTEM:CONSOLE /LIB
PATH:../vendor/microsoft/msdev80_2005/VC/atlmfc/lib /LIBPATH:../vendor/microsoft
/msdev80_2005/VC/lib /LIBPATH:../vendor/microsoft/msdev80_2005/VC/PlatformSDK/Li
b /LIBPATH:lib/win32/dbg /OUT:bin/win32/dbg/bugshow.exe Advapi32.lib ws2_32.lib
bugshow/obj/win32/dbg/main.o libA.lib libB.lib libC.lib libD.lib
Run Code Online (Sandbox Code Playgroud)
main.o正在使用以下编译器指令进行编译:
../vendor/microsoft/msdev80_2005/VC/bin/cl.exe /nologo /X /w /EHsc -I../vendor/m
icrosoft/msdev80_2005/VC/atlmfc/include -I../vendor/microsoft/msdev80_2005/VC/in
clude -I../vendor/microsoft/msdev80_2005/VC/PlatformSDK/Include /D_WIN32 /DBOOST
_USE_WINDOWS_H /DWIN32_LEAN_AND_MEAN /D_WIN32_WINNT=0x0501 /DBOOST_THREAD_USE_LI
B /DBOOST_ALL_NO_LIB /D_CRT_SECURE_NO_DEPRECATE /D_CRT_NONSTDC_NO_DEPRECATE /Z7
/MTd /c -I../vendor/boost.org/boost/1.45.0/include /Fobugshow/obj/win32/dbg/main.o
bugshow/main.cpp
Run Code Online (Sandbox Code Playgroud)
任何想法为什么link.exe会像这样失败?
更新:
当我将link.exe所在的文件夹添加到我的PATH,然后调用没有路径前缀的link.exe时,我收到以下错误:
LINK: fatal error LNK1181: cannot open input file …Run Code Online (Sandbox Code Playgroud) 我想在c ++(伪代码)中实现以下数据结构:
Map<Integer, Integer> // Key->Value pairs
Map.put(1,6);
Map.put(2,5);
Map.put(6,89);
Map.put(7,23);
... etc ...
Map.get(2) .... returns 5
Run Code Online (Sandbox Code Playgroud)
换句话说,给定整数对,其中一个是查找键,什么是最快的库实现,让我从其中一个键检索值?不需要对Value-> Key进行相反的搜索.
该地图的大小可能大约为10 000个元素.
我假设二叉树搜索会产生最快的查找时间?是std:映射使用的最佳工具吗?boost会提出任何替代方案吗?