小编Sun*_*oot的帖子

iTextSharp - 将 HTML 片段输出到 PDF(到表格单元格)

我正在使用 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>通常的样子等。

html pdf pdf-generation itext

5
推荐指数
1
解决办法
1万
查看次数

NHibernate - 使用SetMaxResults的HQL"join fetch"抛出错误

我正在尝试运行最简单的查询:

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)

nhibernate hql nhibernate-mapping

5
推荐指数
1
解决办法
1368
查看次数

ASP.NET MVC - 通过GET提交时,让Html.BeginForm()记住Querystring参数

我有一个通过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= testexample.com/books/fiction?ProductsSearch=test)

2)它应该记住查询字符串中已有的任何现有的查询字符串参数,在单击"搜索"按钮后保留它们.example.com/myOrders?page=2搜索后点击它应该去example.com/myOrders?page=2&ProductsSearch=test)

我可以做到1)但不能解决2).

我通常认为,对于一个from到GET并附加查询字符串params,它需要有隐藏的表单字段,所以我可以编写一个实用程序函数,自动为任何查询字符串值添加一堆隐藏的表单字段,但我想检查是否有isn这是一种更简单的方法,或者我可能会采取错误的方式.

干杯!

asp.net-mvc query-string

4
推荐指数
1
解决办法
8974
查看次数

SQL Server - 选择行,删除重复但保留最高日期的行

考虑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,ActionTypeActionDate返回包含最新行的行并忽略其他行,即使它们具有不同的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)

但我无法弄清楚如何编写查询来做到这一点.

sql t-sql sql-server-2008

4
推荐指数
1
解决办法
4580
查看次数

Visual Studio 2010正在吃我的DLL! - 构建后缺少引用的第三方dll

请帮助我把头发拉出来:

我有一个Visual Studio ASP.NET MVC解决方案,log4net在这种情况下,项目引用第三方DLL .我的解决方案树如下:

  • GenericLibrary
  • MyApp.NHibernate
  • MyApp.Library
  • MyApp.WebUI

MyApp.WebUI是主要的启动MVC Web项目,并且引用了GenericLibrary,MyApp.NHibernateMyApp.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继续消失并重新出现.

.net dll compilation visual-studio-2010 visual-studio

3
推荐指数
1
解决办法
2440
查看次数

WebdriverIO - 如何向Jasmine测试发送参数?

我有一堆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)

jasmine selenium-webdriver webdriver-io

3
推荐指数
1
解决办法
3648
查看次数

ASP.NET - 获取没有HttpContext.Current的网站URL(在后台线程中运行)

有点远,但是当没有HttpContext.Current可用时,ASP.NET中有一种方法可以动态获取网站的URL(http://www.example.com).

没有HttpContext,因为代码在后台线程*中运行(但在ASP.NET AppDomain下).我有一个后台进程,将每天晚上邮件出去,需要包括网络地址,但我不想因为部署和测试的硬编码(它改变的http://本地主机:12345HTTP:/ /testing.example.com然后到http://www.example.com获取实时网站).

*请不要建议Windows服务,我知道这些,但托管限制阻止我这样做.

asp.net url httpcontext backgroundworker

2
推荐指数
1
解决办法
3478
查看次数