小编Jef*_*f G的帖子

如何在MigraDoc表中设置单元格的背景颜色

我有一个MigraDoc表,我指定行高0.75厘米,文本在单元格的中间垂直对齐.当我将cell.Format.Shading.Color设置为非白色的东西时,边框附近仍有一部分单元格在四边显示为白色.

我发现我可以通过设置column删除文本左侧和右侧的白色部分.LeftPadding = 0和column.RightPadding = 0.但是,我无法弄清楚如何在文本的顶部/底部获得白色条纹消失而不影响文本的垂直对齐.如果我将段落线高度更改为0.75厘米,条纹将消失,但文本在单元格内底部对齐.我无法设置列着色颜色,因为列中的每个单元格都包含不同的颜色.有没有人知道强制段落垂直填充单元格的方法(或者让单元格中的背景颜色均匀)?

以下是我的代码示例(在C#中),其中表的类型为MigraDoc.DocumentObjectModel.Tables.Table:

...

// Add a column at index #2
var column = table.AddColumn();
column.LeftPadding  = 0;
column.RightPadding = 0;

// Add more columns
... 

// Iterate through the data printed in each row
foreach (var rowData in myData)
{
    // Create a row for the data
    var row = table.AddRow();
    row.Height = ".75cm";
    row.Format.Font.Size = 11;
    row.VerticalAlignment = VerticalAlignment.Center;

    ...

    // The following is for illustrative purposes... the actual
    //     colors and text is …
Run Code Online (Sandbox Code Playgroud)

pdfsharp migradoc c#-4.0

12
推荐指数
1
解决办法
6665
查看次数

在Json.NET序列化中忽略基类属性

我有以下类结构:

[JsonObject]
public class Polygon : IEnumerable<Point>
{
    public List<Point> Vertices { get; set; }
    public AxisAlignedRectangle Envelope { get; set; }
}

public class AxisAlignedRectangle : Polygon {
    public double Left { get; set; }
    ...
}
Run Code Online (Sandbox Code Playgroud)

我正在序列化这个Polygon类,但是当我这样做时,我得到一个JsonSerializationException消息"为属性'Envelope'检测到自我引用循环',类型为'MyNamespace.AxisAlignedRectangle'." 如果我将[JsonObject(IsReference = true)](如此处所述)添加到AxisAlignedRectangle,代码运行正常,但我在AxisAlignedRectangle的每个实例中获得一个自动分配的$ id字段,并在重新引用该实例时获得$ ref字段.例如,当我序列化多边形时,我得到:

{
    Vertices: [ ... ],
    Envelope: {
        $id: '1',
        Left: -5,
        ...
        Vertices: [ ... ],
        Envelope: {
            $ref: '1'
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我希望在序列化AxisAlignedRectangle时完全删除Polygon属性.我尝试DataContractAttribute在AxisAlignedRectangle类中添加一个(以及适当的DataMemberAttribute属性),但Polygon的所有属性仍然被序列化.这是意料之外的,因为 …

c# serialization json json.net

11
推荐指数
3
解决办法
9222
查看次数

Dapper Bulk Insert返回序列号

我试图使用Dapper over Npgsql执行批量插入,返回新插入的行的ID.在我的两个示例中都使用了以下insert语句:

var query = "INSERT INTO \"MyTable\" (\"Value\") VALUES (@Value) RETURNING \"ID\"";
Run Code Online (Sandbox Code Playgroud)

首先,我尝试添加一个具有"Value"属性的对象数组:

var values = new[] {
    new { Value = 0.0 },
    new { Value = 0.5 }
};
var ids = connection.Query<int>(query, values);
Run Code Online (Sandbox Code Playgroud)

但是,由于NpgsqlException失败:"错误:42703:列"值"不存在".读完这个问题之后,我想也许我必须传递一个DataTable对象而不是一个对象数组:

var dataTable = new DataTable();
dataTable.Columns.Add("Value", typeof(double));
dataTable.Rows.Add(0.0);
dataTable.Rows.Add(0.5);
var ids = connection.Query<int>(query, dataTable);
Run Code Online (Sandbox Code Playgroud)

但是,这失败了完全相同的异常.如何通过Npgsql执行批量插入并从Dapper中获取生成的序列ID?

我注意到异常的大小与列名称不匹配,但我确定我在表和列名称周围有引号,所以我不确定为什么它在"值"而不是"值"中表示例外.只是想我会提到它,以防它以某种方式与错误有关,因为很容易忽视套管.

- 编辑 -

为了澄清,这是创建表的SQL

CREATE TABLE "MyTable" (
    "ID" SERIAL PRIMARY KEY,
    "Value" DOUBLE PRECISION NOT NULL
);
Run Code Online (Sandbox Code Playgroud)

并使用上面定义的变量"query"和"values",这是基于每行的代码:

var ids = new …
Run Code Online (Sandbox Code Playgroud)

c# npgsql dapper postgresql-9.3

10
推荐指数
1
解决办法
5411
查看次数

正则表达式检索引用的字符串和引用字符

我有一种语言,它将字符串定义为由单引号或双引号分隔,其中分隔符在字符串中通过加倍来转义.例如,以下所有内容都是合法字符串:

'This isn''t easy to parse.'
'Then John said, "Hello Tim!"'
"This isn't easy to parse."
"Then John said, ""Hello Tim!"""
Run Code Online (Sandbox Code Playgroud)

我有一个字符串集合(上面定义),由不包含引号的东西分隔.我试图用正则表达式做的是解析列表中的每个字符串.例如,这是一个输入:

"一些字符串#1"或"一些字符串#2"和"一些'字符串'#3"XOR
'一些"字符串"#4'HOWDY"一些""字符串""#5"FOO'一些''字符串'' #6'

用于确定字符串是否具有这种形式的正则表达式是微不足道的:

^(?:"(?:[^"]|"")*"|'(?:[^']|'')*')(?:\s+[^"'\s]+\s+(?:"(?:[^"]|"")*"|'(?:[^']|'')*')*
Run Code Online (Sandbox Code Playgroud)

在运行上面的表达式来测试它是否是这种形式之后,我需要另一个正则表达式来从输入中获取每个分隔的字符串.我计划这样做如下:

Pattern pattern = Pattern.compile("What REGEX goes here?");
Matcher matcher = pattern.matcher(inputString);
int startIndex = 0;
while (matcher.find(startIndex))
{
    String quote        = matcher.group(1);
    String quotedString = matcher.group(2);
    ...
    startIndex = matcher.end();
}
Run Code Online (Sandbox Code Playgroud)

我想要一个正则表达式来捕获组#1中的引号字符,以及组#2中的引号中的文本(我正在使用Java Regex).所以,对于上面的输入,我正在寻找一个在每个循环迭代中产生以下输出的正则表达式:

Loop 1: matcher.group(1) = "
        matcher.group(2) = Some String #1
Loop 2: matcher.group(1) = '
        matcher.group(2) = Some String …
Run Code Online (Sandbox Code Playgroud)

java regex

10
推荐指数
1
解决办法
1516
查看次数

允许在Google Maps v3 Satellite View上进一步缩放

我有一些非常高分辨率的航拍图像,我希望在卫星视图基本地图上显示.我的图像非常适合生成高达23级的图像.但是,Google的卫星视图只允许放大到20级.我知道一旦用户放大到20级,我就可以手动将地图类型切换到我的自定义叠加层(所以只显示我的地图类型),但后来我丢失了谷歌图像以获得完整的缩放级别.

我的问题是,有一些方法来注册一个事件一旦缩放达到20级,客户端试图进一步放大但不能?如果没有,是否有其他想法如何在不丢失20级Google图像的情况下实现进一步缩放?

我能想到的唯一其他解决方案是创建第二个自定义磁贴服务器,它只是将请求转发到标准Google磁贴网址,但提供了不同的最小/最大缩放.如果这个想法是要走的路,我也希望得到确认.谢谢.

google-maps google-maps-api-3

7
推荐指数
1
解决办法
2195
查看次数

如何创建包含集合的配置节

还有一个很大的问题和答案在这里,说明如何创建自定义配置部分,它能够解析以下形式进入.NET对象的配置:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="CustomConfigSection" type="ConfigTest.CustomConfigSection,ConfigTest" />
  </configSections>

  <CustomConfigSection>
    <ConfigElements>
      <ConfigElement key="Test1" />
      <ConfigElement key="Test2" />
    </ConfigElements>
  </CustomConfigSection>

</configuration>
Run Code Online (Sandbox Code Playgroud)

我的问题是,有没有人知道如何创建没有ConfigElements元素的相同自定义配置部分?例如,一个将解析以下CustomConfigSection元素代替上面显示的元素:

  <CustomConfigSection>
    <ConfigElement key="Test1" />
    <ConfigElement key="Test2" />
  </CustomConfigSection>
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是,类型CustomConfigSection需要从ConfigurationSectionConfigurationElementCollection继承,这当然在C#中是不可能的.我发现的另一种方法要求我实现IConfigurationSectionHandler,它从.Net v2开始不推荐使用.有谁知道如何达到预期的效果?谢谢.

.net c# configuration system.configuration

7
推荐指数
1
解决办法
3210
查看次数

Postgres插入视图规则与返回条款

我试图允许带有返回子句的insert语句进入Postgres v9.4中的视图,但我正在努力学习语法.这就是我想要调用insert语句的方法:

CREATE VIEW MyView AS SELECT a.*, b.someCol1
    FROM tableA a JOIN tableB b USING(aPrimaryKey);
INSERT INTO MyView (time, someCol) VALUES (someTime, someValue) RETURNING *;
INSERT INTO MyView (someCol) VALUES (someValue) RETURNING *;
Run Code Online (Sandbox Code Playgroud)

请注意,时间的默认值为NOW().这是我到目前为止:

CREATE RULE MyRuleName AS ON INSERT TO MyView DO INSTEAD (
    INSERT INTO tableA (time) VALUES COALESCE(NEW.time, NOW());
    INSERT INTO tableB (aPrimaryKey, someCol)
        VALUES (CURRVAL('tableA_aPrimaryKey_seq'), NEW.someValue);
);
Run Code Online (Sandbox Code Playgroud)

上面的工作是插入值,但我正在努力尝试找出如何添加返回的语句.我试过以下没有成功:

CREATE RULE MyRuleName AS ON INSERT TO MyView DO INSTEAD (
    INSERT INTO tableA (time) VALUES COALESCE(NEW.time, …
Run Code Online (Sandbox Code Playgroud)

postgresql sql-insert sql-returning

6
推荐指数
1
解决办法
2805
查看次数

使用Postgres中的IEnumerable参数进行IN查询的Dapper AddDynamicParams

首先,我遇到了所讨论的同样的问题,据称大约在两年前修复了.有关该问题,请参阅以下问题:

带有"动态"参数名称的IN语句的Dapper AddDynamicParams

我遇到的问题是,当我SELECT * FROM MyTable WHERE MyId IN @myIds对Postgres 9.3数据库执行类似的查询()时,我收到以下异常:

Npgsql.NpgsqlException : ERROR: 42883: operator does not exist: integer = integer[]
Run Code Online (Sandbox Code Playgroud)

我执行此查询的代码如下:

List<MyTable> result;

var query = "SELECT * FROM MyTable WHERE MyId IN @myIds";
var queryParams = new Dictionary<string, object> {
    { "myIds", new [] { 5, 6 } }
};

var dynamicParams = new DynamicParameters(queryParams);
using (var connection = new NpgsqlConnection(connectionString)) {
    result = connection.Query<MyTable>(query, dynamicParams).ToList();
}

return result;
Run Code Online (Sandbox Code Playgroud)

相反,我在行上的Dapper(v1.29)SqlMapper.PackListParameters函数中放置了一个断点,if (FeatureSupport.Get(command.Connection).Arrays)并手动将执行移动到else部分,然后查询运行并返回预期结果.

我注意到该 …

c# dapper postgresql-9.3

6
推荐指数
1
解决办法
2157
查看次数

Postgres规则防止CTE查询

使用Postgres 9.3:

我试图在另一个表上执行插入时自动填充表.这似乎是一个很好用于规则,但在将规则添加到第一个表后,我不再能够使用可写CTE执行插入到第二个表中.这是一个例子:

CREATE TABLE foo (
    id INT PRIMARY KEY
);

CREATE TABLE bar (
    id INT PRIMARY KEY REFERENCES foo
);

CREATE RULE insertFoo AS ON INSERT TO foo DO INSERT INTO bar VALUES (NEW.id);

WITH a AS (SELECT * FROM (VALUES (1), (2)) b)
INSERT INTO foo SELECT * FROM a
Run Code Online (Sandbox Code Playgroud)

运行时,我收到错误

"错误:WITH不能在由规则重写为多个查询的查询中使用".

我搜索了该错误字符串,但我只能找到源代码的链接.我知道我可以使用行级触发器执行上述操作,但似乎我应该能够在语句级别执行此操作.为什么我不能使用可写CTE,当这样的查询(在这种情况下)可以很容易地重写为:

INSERT INTO foo SELECT * FROM (VALUES (1), (2)) a
Run Code Online (Sandbox Code Playgroud)

有没有人知道另一种方法可以完成我试图做的事情,除了1)使用规则,阻止使用"with"查询,或2)使用行级触发器?谢谢,         

postgresql postgresql-9.3

6
推荐指数
1
解决办法
642
查看次数

JavaFX绑定失败,"无法绑定到无类型对象".

我有一个定义JavaFX用户界面的FXML文件.在FXML文件中,我有以下内容:

...
<Checkbox fx:id="myCheckbox" ... />
<Spinner disable="${myCheckbox.selected}" ... />
...
Run Code Online (Sandbox Code Playgroud)

当我尝试使用以下代码加载我的FXML文件时,我得到了一条javafx.fxml.LoadException消息

无法绑定到无类型对象.

final Class<?> controllerClass = ...;
final FXMLLoader fxmlLoader = new FXMLLoader();
final String fxmlPath = controllerClass.getSimpleName() + ".fxml";
try (final InputStream fxmlStream = controllerClass.getResourceAsStream(fxmlPath)) {
    fxmlLoader.load(fxmlStream);
    final Object controller = fxmlLoader.<Object>getController();
    return controller
}
Run Code Online (Sandbox Code Playgroud)

当选中复选框时,有没有人知道如何修改FXML以禁用我的微调器?我知道如何在代码中进行此操作,但想要了解有关FXML语法的更多信息.我还应该补充一点,当我从FXML中删除尝试的属性绑定时,所有内容都按预期加载.谢谢.

编辑

由于@Groostav的评论说它必须是...代码部分的内容,我想出了一个最小的,可重现的例子.在我的示例中,有两个文件,我将在此处完整复制.

Main.java:

package test;

import java.io.InputStream;

import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;

public class Main extends Application {
    public static void main(final String[] …
Run Code Online (Sandbox Code Playgroud)

java javafx java-8

6
推荐指数
1
解决办法
567
查看次数