我的C#应用程序中有一个datagridview,用户应该只能点击完整的行.所以我将SelectionMode设置为FullRowSelect.
但是现在我想要一个在用户双击一行时触发的事件.我想在MessageBox中有行号.
我尝试了以下方法:
this.roomDataGridView.CellContentDoubleClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.roomDataGridView_CellCont? ?entDoubleClick);
private void roomDataGridView_CellContentDoubleClick(object sender, DataGridViewCellEventArgs e)
{
MessageBox.Show(e.RowIndex.ToString());
}
Run Code Online (Sandbox Code Playgroud)
不幸的是没有任何反应.我究竟做错了什么?
Imagagine我有一个像下面这样的多边形:
我正在寻找一个C#算法,我可以在任何多边形内找到一个点(可能是中点或也是一个随机点).
为了找到质心,我使用了以下算法:
private Point3d GetPolyLineCentroid(DBObject pObject, double pImageWidth, double pImageHeight)
{
Point2d[] pointArray = GetPointArrayOfRoomPolygon(pObject);
double centroidX = 0.0;
double centroidY = 0.0;
double signedArea = 0.0;
double x0 = 0.0; // Current vertex X
double y0 = 0.0; // Current vertex Y
double x1 = 0.0; // Next vertex X
double y1 = 0.0; // Next vertex Y
double a = 0.0; // Partial signed area
int i = 0;
for (i = 0; i < pointArray.Length - …
Run Code Online (Sandbox Code Playgroud) 我想动态更改log4j日志文件的路径和文件名.
我已经阅读了很多页面,几乎每个人都告诉我应该使用这里的系统属性: 如何动态更改log4j日志文件?
所以我的log4j.properties文件如下所示:
log4j.logger.JDBC_LOGGER=INFO,jdbcTests
log4j.additivity.JDBC_LOGGER = false
log4j.appender.jdbcTests=org.apache.log4j.FileAppender
log4j.appender.jdbcTests.File=${my.log}
log4j.appender.jdbcTests.layout=org.apache.log4j.PatternLayout
log4j.appender.jdbcTests.append = false
log4j.appender.jdbcTests.layout.ConversionPattern=%d{yyyy mm dd HH:mm:ss} %5p %C:Line %L - %m%n
Run Code Online (Sandbox Code Playgroud)
在我的main方法中,我将设置我的新系统属性:
System.setProperty("{my.log", "C:/logfile.log");
Run Code Online (Sandbox Code Playgroud)
但我只是得到一个错误:
log4j:ERROR setFile(null,false) call failed.
java.io.FileNotFoundException:
at java.io.FileOutputStream.open(Native Method)....
Run Code Online (Sandbox Code Playgroud)
当我尝试读取我的set系统属性时:
System.out.println(System.getProperty("my.log"));
Run Code Online (Sandbox Code Playgroud)
它返回null.我做错了什么?
我的Windows批处理文件中有以下字符串:
"-String"
Run Code Online (Sandbox Code Playgroud)
该字符串还包含字符串开头和结尾的两个引号,如上所述.
我想剥离第一个和最后一个字符,以便我得到以下字符串:
-String
Run Code Online (Sandbox Code Playgroud)
我试过这个:
set currentParameter="-String"
echo %currentParameter:~1,-1%
Run Code Online (Sandbox Code Playgroud)
这打印出应该是的字符串:
-String
Run Code Online (Sandbox Code Playgroud)
但是当我尝试像这样存储编辑过的字符串时,它会失败:
set currentParameter="-String"
set currentParameter=%currentParameter:~1,-1%
echo %currentParameter%
Run Code Online (Sandbox Code Playgroud)
什么都没打印出来.我做错了什么?
这真的很奇怪.当我删除这样的字符时,它可以工作:
set currentParameter="-String"
set currentParameter=%currentParameter:~1,-1%
echo %currentParameter%
Run Code Online (Sandbox Code Playgroud)
打印出来:
-String
Run Code Online (Sandbox Code Playgroud)
但实际上我的批次有点复杂,并且它不起作用.我将展示我编程的内容:
@echo off
set string="-String","-String2"
Set count=0
For %%j in (%string%) Do Set /A count+=1
FOR /L %%H IN (1,1,%COUNT%) DO (
echo .
call :myFunc %%H
)
exit /b
:myFunc
FOR /F "tokens=%1 delims=," %%I IN ("%string%") Do (
echo String WITHOUT stripping characters: %%I
set currentParameter=%%I
set currentParameter=%currentParameter:~1,-1%
echo …
Run Code Online (Sandbox Code Playgroud) 我使用Apache Commons CLI来解析命令行参数.
我正在寻找一种在帮助中显示多个参数值名称的方法.以下是选项"startimport"的一个参数的示例:
Option startimport = OptionBuilder
.withArgName("environment")
.hasArg()
.withDescription(
"Description")
.create("startimport");
Run Code Online (Sandbox Code Playgroud)
当我使用-help打印出来:
-startimport <environment> Description
Run Code Online (Sandbox Code Playgroud)
那很好.但是,如果我想使用两个参数呢?
Option startimport = OptionBuilder
.withArgName("firstArg secondArg")
.hasArgs(2)
.withDescription("Description")
.create("startimport ");
Run Code Online (Sandbox Code Playgroud)
解析这两个参数不是问题,但我想在"-help"中输出以下内容:
startimport <firstArg> <secondArg> Description
Run Code Online (Sandbox Code Playgroud)
但目前我会得到:
startimport <firstArg secondArg> Description
Run Code Online (Sandbox Code Playgroud)
这个问题有适当的解决方案吗?
java command-line arguments command-line-interface apache-commons-cli
我想在MyBatis中为Select语句使用String参数.我的mapper.xml:
<select id="selectAll" parameterType="String" resultMap="fastXMLResultMap">
SELECT CREATIONDATE, DOCUMENTID, TITEL, REGTITEL, INFORCEDATE, DOCTYPE
FROM #{databBaseTable}
</select>
Run Code Online (Sandbox Code Playgroud)
和调用功能:
public List<FastXMLObject> selectAll(String databBaseTable) {
SqlSession session = sqlSessionFactory.openSession();
System.out.println("Table: "+databBaseTable);
try {
List<FastXMLObject> list = session.selectList("FastXMLObject.selectAll",databBaseTable);
return list;
} finally {
session.close();
}
}
Run Code Online (Sandbox Code Playgroud)
字符串dataBaseTable是我的数据库的表的名称(谁会想到)因为我想从verious表中动态获取数据.
但不幸的是,这不起作用:错误:ORA-00903:UngültigerTabellenname(表名无效)但它不是.当我打印出"databBaseTable"的值时,它就是表的确切名称.当我将表的名称写入我的mapper.xml而没有变量时,它可以工作.我做错了什么?
在java中你可以使用System.out.println()来打印一个空白行,但它如何在日志文件中使用log4j?在那里我还想在日志文件中有一个或多个空行.
我已经阅读了以下内容: log4j如何追加空白行
但这并不是真的有用,因为
logger.debug("\n");
logger.debug("");
Run Code Online (Sandbox Code Playgroud)
您不打印消息,但其他信息(如时间等)(记录器的布局)仍存储在日志文件中.但我只想要一个完整的空行.有人可以帮我吗?
在我的Windows批处理文件中,我有一些带有不同数量字符串的变量.为了exapmle:
set string="-start" "-end someOption"
Run Code Online (Sandbox Code Playgroud)
我通过以下方式计算String的数量:
Set count=0
For %%j in (%string%) Do Set /A count+=1
echo.Total count: %count%
Run Code Online (Sandbox Code Playgroud)
输出将是:
Total count: 2
Run Code Online (Sandbox Code Playgroud)
现在我想在我的变量中使用Strings多次启动一个应用程序,并且我想给应用程序提供当前字符串作为参数.我试过这个:
FOR /L %%H IN (1,1,%COUNT%) DO (
echo %%H
FOR /F "tokens=%%H " %%I IN ("%string%") Do (
echo %%I
rem java -jar app.jar %%I
)
)
Run Code Online (Sandbox Code Playgroud)
但不幸的是,这不起作用:这是输出:
当前字符串的数量:1"%H""kann syntaktisch and dieser Stelle nicht verarbeitet werden.(%H""不能在这个地方使用语法)当前字符串的数量:2"%H""kann syntaktisch an dieser Stelle nicht verarbeitet werden.
如何在变量"string"中循环遍历两个字符串?
我使用NHibernate作为我的C#pojects,因此我有几个模型类.
让我们假设以下示例:
using System;
namespace TestProject.Model
{
public class Room
{
public virtual int Id { get; set; }
public virtual string UniqueID { get; set; }
public virtual int RoomID { get; set; }
public virtual float Area { get; set; }
}
}
Run Code Online (Sandbox Code Playgroud)
使用NHibernate映射这些对象到目前为止工作正常.现在我想生成一个新的Room对象,我想将它存储在数据库中.为了避免单独设置每个成员,我向模型类添加了一个新的构造函数.在我写的虚拟成员下面:
public RoomProperty()
{
}
public RoomProperty(int pRoomId, int pArea)
{
UniqueID = Guid.NewGuid().ToString();
RoomID = pRoomId;
Area = pArea;
}
Run Code Online (Sandbox Code Playgroud)
使用FxCop分析我的代码告诉我以下内容:
"ConstructorShouldNotCallVirtualMethodsRule"
This rule warns the developer if any virtual methods are called in …
Run Code Online (Sandbox Code Playgroud) 我目前正在编写我的第一个JSF 2页面,我想实现以下内容:当用户在ah:inputText元素中写入内容并按下回车按钮时,另一个h:inputText应该从数据库中更新一些数据.
我的testpage包含以下代码:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html">
<h:body>
<h3>JSF 2.0 Example</h3>
<h:form>
<h:inputText id="inputField" value="#{helloBean.name}">
<f:ajax render="output" execute="inputField" event="keypress" listener="#{bean.myChangeListener}" />
</h:inputText>
<h2><h:outputText id="output" value="#{helloBean.name}" /></h2>
</h:form>
</h:body>
</html>
Run Code Online (Sandbox Code Playgroud)
Bean包含所有必要的getter和setter以及此函数:
public void myChangeEvent( AjaxBehaviorEvent event) {
System.out.println( "VALUE CHANGED" );
}
Run Code Online (Sandbox Code Playgroud)
更新2013-12-16:
经过数小时的故障排除后,我发现了为什么在离开文本字段或在文本字段中按Enter键时没有提交任何内容的问题.我的Web应用程序是使用模板创建的,在我的页面标题的模板中是一个'a4j:status'标签,这与JSF 2冲突.删除'a4j:status'行后,当我点击时调用myChangeEvent方法编辑文本字段值后,在网页上的其他位置.
但是存在的问题是,在更改文本字段值后单击enter时整个页面都会被提交.这是因为我在页面底部有一个按钮,用于保存用户输入,因此提交整个页面,这是正常的.但是在文本字段中按Enter键时不应调用此按钮.我必须添加到现有代码中?
更新2013-12-17: 在JS遇到麻烦之后我终于在L-Ray的帮助下工作了(再次感谢).在这里,我将展示使用JQuery的最终版和工作版:
<h:inputText id="inputField" value="#{helloBean.name}" >
<f:ajax render="output" execute="inputField" event="change" listener="#{helloBean.myChangeEvent}" />
</h:inputText>
<h2><h:outputText id="output" value="#{helloBean.name}" /></h2>
<script type="text/javascript">
$(document).ready(function() {
$( "#mainForm\\:inputField" ).bind('keypress', …
Run Code Online (Sandbox Code Playgroud) 我目前面临以下问题:
我编写了一个Java程序来解析XML数据并将数据放入数据库中.因为我使用MyBatis,所以数据库几乎可以是已经存在的每个数据库.我只会告诉你一段代码然后我会解释这个问题.
public void insert(SourceContent content){
SqlSession session = sqlSessionFactory.openSession();
try {
session.insert("SourceDocument.insert", content);
session.commit();
} catch (Exception e){
e.printStackTrace();
} finally {
session.close();
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的DAO类,用于调用MyBatis映射文件的sql语句.如果MyBatis的映射配置正确完成,则插入我的内容(这是一个java bean的实例)会很糟糕.但是想象一下,如果我在数据库中重命名一个表,那么连接就会失败,因为配置错误.现在我想赶上即将发生的错误.当我使用上面的语句时:
catch (Exception e){
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
programm打印正确的异常:###原因:java.sql.SQLSyntaxErrorException:ORA-00942:Tabelle oder查看nicht vorhanden但是我不想捕获所有异常,我只是想捕获SQLSyntaxErrorException,因为我想告诉它用户,他在数据库中的表不可用.但是除了上面看到的正常异常之外,我无法捕获任何其他异常.我希望我能清楚地说出来.有人可以帮我吗?
让我们想象一下,我的JSF 2应用程序中有两个页面:第一页显示一个对象表(汽车或其他),另一个页面能够显示一个特定对象的详细信息.表页面位于请求范围内,因为每次用户请求时都应重新加载对象.详细信息页面在视图范围内.因此,当我单击表格内的对象时,该对象应显示在详细信息页面中.通过重定向,我可以转到详细信息页面,但详细信息页面为空,因为生成了新的vew.好吧,我可以将范围更改为会话但这会导致其他问题,所以我希望在视图范围内有详细信息页面.有没有办法将参数传递给新生成的视图范围bean?
更新1
这是第一次尝试使用视图参数的代码片段.评论说这不起作用.该值作为请求参数传递,但在目标页面中,该值为null.
表格页面:
<h:button value="Go to details" outcome="targetPage">
<f:param name="carId" value="This is a test" />
</h:button>
Run Code Online (Sandbox Code Playgroud)
详情页面:
<f:metadata>
<f:viewParam name="carId" value="#{bean.id}" />
<f:event type="preRenderView" listener="#{bean.loadData}"/>
</f:metadata>
Run Code Online (Sandbox Code Playgroud)
豆的详细信息页面:
private String id;
public String getId() {
return id;
}
public void setId( String id ) {
this.id = id;
}
public void loadData() {
System.out.println( "Id: " + id );
}
Run Code Online (Sandbox Code Playgroud)
更新2
我发现了自己的错误.元数据部分位于模板文件中.当我将标签放入主文件的详细信息页面时,它可以工作.非常感谢你.
java ×4
c# ×3
batch-file ×2
dynamic ×2
log4j ×2
mybatis ×2
windows ×2
ajax ×1
algorithm ×1
arguments ×1
center ×1
character ×1
command-line ×1
constructor ×1
database ×1
datagridview ×1
double-click ×1
events ×1
exception ×1
jsf ×1
jsf-2 ×1
line ×1
logfile ×1
loops ×1
parameters ×1
polygon ×1
properties ×1
scope ×1
string ×1
strip ×1
token ×1
try-catch ×1
view ×1
virtual ×1