我有一个GridView,ObjectDataSource
我希望能够对它进行排序.
分页工作正常,但排序给了我一个例外:
GridView
gridView
触发了未处理的事件排序.
如何在服务器端启用排序?
(即gridView.EnableSortingAndPagingCallbacks
必须保持错误)
我有一个方法,使用可枚举的"搜索字符串"跨文件执行简单的'grep'.(实际上,我正在做一个非常天真的"查找所有参考文献")
IEnumerable<string> searchStrings = GetSearchStrings();
IEnumerable<string> filesToLookIn = GetFiles();
MultiMap<string, string> references = new MultiMap<string, string>();
foreach( string fileName in filesToLookIn )
{
foreach( string line in File.ReadAllLines( fileName ) )
{
foreach( string searchString in searchStrings )
{
if( line.Contains( searchString ) )
{
references.AddIfNew( searchString, fileName );
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
注意:MultiMap<TKey,TValue>
大致相同Dictionary<TKey,List<TValue>>
,只是避免您通常遇到的NullReferenceExceptions.
我一直试图将它变成一种更"功能"的风格,使用链式LINQ扩展方法,但还没有想到它.
一次死胡同尝试:
// I get lost on how to do a loop within a loop here...
// plus, I lose track of …
Run Code Online (Sandbox Code Playgroud) 这是我提出的最好的:
public static int GetPageCount( PrintDocument printDocument )
{
printDocument.PrinterSettings.PrintFileName = Path.GetTempFileName();
printDocument.PrinterSettings.PrintToFile = true;
int count = 0;
printDocument.PrintController = new StandardPrintController();
printDocument.PrintPage += (sender, e) => count++;
printDocument.Print();
File.Delete( printDocument.PrinterSettings.PrintFileName );
return count;
}
Run Code Online (Sandbox Code Playgroud)
有一个更好的方法吗?(这实际上很慢)
我试图从可枚举的构建字典,但我需要一个聚合器用于所有可能重复的键.直接使用ToDictionary()偶尔会导致重复键.
在这种情况下,我有一堆时间条目({DateTime Date,double Hours}),如果同一天有多个时间条目,我想要那天的总时间.即,一个自定义聚合器,它将为我提供一个字典条目的唯一键.
有没有比这更好的方法呢?
(这确实有效.)
private static Dictionary<DateTime, double> CreateAggregatedDictionaryByDate( IEnumerable<TimeEntry> timeEntries )
{
return
timeEntries
.GroupBy(te => new {te.Date})
.Select(group => new {group.Key.Date, Hours = group.Select(te => te.Hours).Sum()})
.ToDictionary(te => te.Date, te => te.Hours);
}
Run Code Online (Sandbox Code Playgroud)
我想我真的在寻找这样的东西:
IEnumerable<T>.ToDictionary(
/* key selector : T -> TKey */,
/* value selector : T -> TValue */,
/* duplicate resolver : IEnumerable<TValue> -> TValue */ );
Run Code Online (Sandbox Code Playgroud)
所以...
timeEntries.ToDictionary(
te => te.Date,
te => te.Hours,
duplicates => duplicates.Sum() );
Run Code Online (Sandbox Code Playgroud)
'解析器'可以是.First()或.Max()等等.
或类似的东西.
我有一个实现......当我正在研究时,另一个实现了答案.
矿: …
我正在使用GridView和ObjectDataSource.我正在实施分页和排序.
在ObjectDataSource上:
objectDataSource.TypeName = value;
objectDataSource.SelectMethod = "Select";
objectDataSource.SelectCountMethod = "SelectCount";
objectDataSource.SortParameterName = "sortExpression";
objectDataSource.EnablePaging = true;
Run Code Online (Sandbox Code Playgroud)
在GridView上:
gridView.AllowPaging = true;
gridView.AllowSorting = true;
gridView.DataSource = objectDataSource;
Run Code Online (Sandbox Code Playgroud)
为了使分页和排序工作,我将"EnableSortingAndPagingCallbacks"设置为True.之前,我得到一个"System.Web.HttpException:GridView触发的事件排序,但没有处理." 这解决了它.
如果我在GridView中只使用BoundFields,这很好并且工作正常.
但是,如果我使用TemplateFields,我会收到"NotSupportedException:TemplateField不支持回调,因为某些控件无法在回调中正确更新.在GridView上关闭回调."
哪个,有道理.我只需要知道如何在不使用EnableSortingAndPagingCallbacks的情况下进行排序.
如果EnableSortingAndPagingCallbacks = True:
如果EnableSortingAndPagingCallbacks = False:
如何让Paging,Sorting和TemplateField同时工作?
澄清实施情况:
将ObjectDataSource与GridView一起使用需要实现一个名为Select的方法,该方法提供排序表达式,要返回的行数和起始行:
public IEnumerable<CountyAndStateGridRow> Select(string sortExpression, int maximumRows, int startRowIndex)
{
string oql = "select County order by {" + sortExpression + "}" ;
var counties = …
Run Code Online (Sandbox Code Playgroud) UPDATE
我决定现在和Clojure一起去.
LispDev还没准备好,Eclipse/cusp不够稳定让我觉得舒服.
至于Clojure,在经历了一个漫长的,非常令人沮丧的,非常讨厌的过程,试图让Eclipse/CCW,Netbeans/Enclojure和IntelliJ/La Clojure工作之后,我终于让Eclipse/CCW工作了.其余的仍处于大多数破碎状态.
(如果我避开它,我会记录什么了为我获得的Eclipse/CCW工作.)
所以现在,我打算用它.我可能会回到CL,查看LispWorks和AllegroLisp的免费版本,但在Microsoft CLR环境中工作时,Clojure对我来说感觉更自然.
谢谢大家的帮助.
原始问题
我是一名非常熟悉Visual Studio的C#开发人员(使用Resharper).
我是Lisps的新手.我最近对Common Lisp和Clojure都感兴趣,并且发现了很多关于它们的好材料.
我已经尝试过Emacs + Slime,但它感觉就像一个非常倒退,过时的解决方案.我对它的力量毫不怀疑,但它的可用性与我以前的习惯完全不同.除了语言之外,我不想使用IDE.
Clojure和CL都有Eclipse插件.还有一些我见过的Clojure选项.由于我不是Java开发人员,所以我对这些IDE一无所知.
Eclipse是一个很好的起点吗?还有其他好的选择吗?
编辑:
这是我习惯的功能:
大多数所有内容都可以在右键单击上下文菜单中使用,或者在您键入时作为悬停组合框或文本框.
我不是说emacs/slime不能这样做,但如果确实如此,它就不会在可用性技术方面使用任何类似的东西.