我正在使用 iTextSharp 为 ASP.NET 应用程序生成 PDF,PDF 生成似乎工作正常,尽管我发现 iTextSharp 使用起来有点不直观,但这是一个不同的故事。
我正在将数据放入 PDF 内的表格中,现在我想将 HTML 内容放入表格单元格中并让它保持格式/样式。我已经看到很多示例展示了如何使用 iTextSharp 将 HTML 解析为 PDF 并保持格式,但这些示例都将内容直接吐出到文档对象中,例如。doc.addElement() 我尝试调整代码以将解析的 HTML 内容吐出到表格单元格中,例如。代替...
objects = HTMLWorker.ParseToList(new StringReader(htmlString), styles);
for (int k = 0; k < objects.Count; ++k)
{
document.Add((IElement) objects[k]);
}
Run Code Online (Sandbox Code Playgroud)
我在用着...
Cell cell = new Cell();
objects = HTMLWorker.ParseToList(new StringReader(htmlString), styles);
for (int k = 0; k < objects.Count; ++k)
{
cell.Add((IElement) objects[k]);
}
table.AddCell(cell);
document.Add(table);
Run Code Online (Sandbox Code Playgroud)
但是,它将数据放入表格单元格中,格式正确,但所有内容都重叠且彼此重叠,而不是间隔开。我有什么做错的地方吗?
上面的代码示例来自该网站http://blog.rubypdf.com/2007/10/10/using-htmlworker-to-parse-html-snippets-and-convert-to-pdf/
注意:我不想维护 CSS 样式,只是希望<h1>大致看起来像<h1>通常的样子等。
我正在尝试运行最简单的查询:
string queryStr = "select b " +
"from Blog b " +
"left outer join fetch b.BlogComments bc";
IList<Blog> blogs = Session.CreateQuery(queryStr)
.SetMaxResults(10)
.List<Blog>();
Run Code Online (Sandbox Code Playgroud)
但它会引发以下错误:
System.ArgumentNullException: Value cannot be null.
Parameter name: source
Run Code Online (Sandbox Code Playgroud)
但是,如果我从HQL中删除'fetch'它可以正常工作.此外,如果我保留fetch但删除SetMaxResults它也可以正常工作.这与fetch + SetMaxResults组合有关.
我正在尝试加载子集合以优化查询并防止SELECT N + 1问题.我正在使用NHibernate 3.3.1.4000和MySQL数据库.
我的映射:
public class BlogMap : ClassMapping<Blog>
{
public BlogMap ()
{
// other properties (snip)....
Set(x => x.BlogComments, x =>
{
x.Inverse(true);
x.Cascade(Cascade.All | Cascade.DeleteOrphans);
x.Lazy(CollectionLazy.Extra);
x.Key(k => { k.Column("BlogId"); });
}, x => x.OneToMany());
}
}
public …Run Code Online (Sandbox Code Playgroud) 我有一个通过Html.BeginForm()呈现的表单,它作为主页面中的一个组件存在,以便它出现在应用程序的每个页面上.我使用Mvc Futures汇编中的Html.RenderAction()完成了这项工作.这是一个简单的搜索表单,它在搜索表单本身下更新同一组件中的某些项目,并执行GET,以便搜索项出现在查询字符串中.
<div class="sideBarContent">
<h2>Search Products</h2>
<% using (Html.BeginForm(ViewContext.RouteData.Values["action"].ToString(),
ViewContext.RouteData.Values["controller"].ToString(), FormMethod.Get)) { %>
<fieldset>
<legend>Search Products</legend>
<div class="formRow">
<label for="ProductsSearch">Search</label>
<%= Html.TextBox("ProductsSearch") %>
</div>
<input type="submit" value="Search" class="button" />
</fieldset>
<% } %>
<ul>
// Products will eventually be listed here
</ul>
</div>
Run Code Online (Sandbox Code Playgroud)
我需要这个表单来执行以下操作:
1)它应该对附加'ProductsSearch'作为查询字符串参数的任何当前页面执行GET(例如:example.com/ ?ProductsSearch= test或example.com/books/fiction?ProductsSearch=test)
2)它应该记住查询字符串中已有的任何现有的查询字符串参数,在单击"搜索"按钮后保留它们.example.com/myOrders?page=2搜索后点击它应该去example.com/myOrders?page=2&ProductsSearch=test)
我可以做到1)但不能解决2).
我通常认为,对于一个from到GET并附加查询字符串params,它需要有隐藏的表单字段,所以我可以编写一个实用程序函数,自动为任何查询字符串值添加一堆隐藏的表单字段,但我想检查是否有isn这是一种更简单的方法,或者我可能会采取错误的方式.
干杯!
考虑SQL Server 2008中的以下数据库表:
ActionID (PK) ActionType ActionDate UserID ContentID
1 'Create' '2013-05-26 18:40:00' 1 10
2 'Create' '2013-05-26 18:30:00' 2 10
3 'Edit' '2013-05-26 12:30:00' 5 12
4 'Edit' '2013-05-26 12:25:00' 5 12
5 'Delete' '2013-05-26 12:22:00' 6 12
Run Code Online (Sandbox Code Playgroud)
我想编写一个SQL查询,该查询按组分组ContentID,ActionType但ActionDate返回包含最新行的行并忽略其他行,即使它们具有不同的UserID列值或其他列值.
所以应该返回的是:
ActionID (PK) ActionType ActionDate UserID ContentID
1 'Create' '2013-05-26 18:40:00' 1 10
3 'Edit' '2013-05-26 12:30:00' 5 12
5 'Delete' '2013-05-26 12:22:00' 6 12
Run Code Online (Sandbox Code Playgroud)
但我无法弄清楚如何编写查询来做到这一点.
请帮助我把头发拉出来:
我有一个Visual Studio ASP.NET MVC解决方案,log4net在这种情况下,项目引用第三方DLL .我的解决方案树如下:
MyApp.WebUI是主要的启动MVC Web项目,并且引用了GenericLibrary,MyApp.NHibernate和MyApp.Library.MyApp.NHibernate引用了所有NHibernate位,包括log4net.
现在的问题是当我编译我的解决方案时,log4net dll似乎出现并从MyApp.WebUI项目的/ bin目录中消失,因此NHibernate可以理解地抛出错误.我的第二台显示器上有一个Windows资源管理器窗口,查看了web项目的/ bin文件夹,我可以看到log4net dll出现然后在每次编译后消失,它似乎按顺序发生(出现,消失,重新出现,消失等)而不是随机.
MyApp.NHibernate项目是唯一引用log4net dll的项目,但GenericLibrary引用了NHibernate而不是log4net.MyApp.NHibernate引用GenericLibrary,MyApp.Library也引用GenericLibrary,但GenericLibrary是独立的.
我能想到的唯一解决方案是为我的解决方案中使用的每个外部库/ dll(Nhibernate,log4net,Castle Windsor等)添加对主MyApp.WebUI项目的引用,以修复log4net问题并避免将来发生这种情况.但这对我来说不是一个非常整洁/解耦的解决方案.
更新:要回答kekekela的问题,我将log Local设置为true,用于log4net引用和MyApp.NHibernate项目引用本身,请参见下面的屏幕截图:
alt text http://www.dominicpettifer.co.uk/Temp/DLL-Hell-1.png
更新2: Bizzarely这个问题似乎只影响log4net DLL.我尝试在MyApp.NHibernate项目中添加一个不同的第三方dll,NLog dll,这似乎保持不变,而log4net继续消失并重新出现.
我有一堆Webdriver.io/Selenium测试,我正在使用jasmine测试框架编写我的测试,所以我有一个wdio.conf.js文件,我已配置为使用jasmine,根据这些说明
问题是我正在测试一个基于广告/营销的高度动态/可配置的Web应用程序,并要求我传递大量配置信息,以便测试知道要测试的内容.例如,在命令行,我想运行如下:
> wdio --campaignId=123 --productId=456
Run Code Online (Sandbox Code Playgroud)
我可以修改wdio.conf.js文件中的'onPrepare'函数/事件来获取这些参数,如下所示:
exports.config = {
....other options (snip)...
framework: 'jasmine',
jasmineNodeOpts: {
defaultTimeoutInterval: 9999999,
expectationResultHandler: function (passed, assertion) { }
},
onPrepare: function (config) {
var campaignId = parseInt(process.argv[2]
.replace('--campaignId=', ''));
var productId = parseInt(process.argv[3]
.replace('--productId=', ''));
config.params = {
campaignId: campaignId,
productId: productId
};
}
};
Run Code Online (Sandbox Code Playgroud)
...但我不知道如何将这些传递给我的茉莉花测试.我试过从process.argv读取但是缺少campaignId和productId args,例如
describe('Campaign Tests', function () {
beforeEach(function(done) {
browser
.session(function(err, client) {
var campaignId = parseInt((process.argv[2] || '')
.replace('--campaignId=', ''));
var productId = parseInt((process.argv[3] …Run Code Online (Sandbox Code Playgroud) 有点远,但是当没有HttpContext.Current可用时,ASP.NET中有一种方法可以动态获取网站的URL(http://www.example.com).
没有HttpContext,因为代码在后台线程*中运行(但在ASP.NET AppDomain下).我有一个后台进程,将每天晚上邮件出去,需要包括网络地址,但我不想因为部署和测试的硬编码(它改变的http://本地主机:12345到HTTP:/ /testing.example.com然后到http://www.example.com获取实时网站).
*请不要建议Windows服务,我知道这些,但托管限制阻止我这样做.
.net ×1
asp.net ×1
asp.net-mvc ×1
compilation ×1
dll ×1
hql ×1
html ×1
httpcontext ×1
itext ×1
jasmine ×1
nhibernate ×1
pdf ×1
query-string ×1
sql ×1
t-sql ×1
url ×1
webdriver-io ×1