如何以编程方式检查/创建要在Windows XP/2003事件查看器中查看的自定义事件日志?
现在我可以在"应用程序"日志中创建条目,但希望为我的各种应用程序提供自定义日志.
我正在使用C# - .NET Framework 3.5
我将文件名传递给下载页面.
即somefile.xls
下载页面将完整目录路径添加回文件名.
即c:\ temp\somefile.xls
问题是现在设置标题的"Content-Disposition"不起作用.它要下载的文件名是完整的directory-filename路径. 即c_temp_somefile
Content-Disposition可以处理完整路径吗?
如果它可以如何让我的脚本正确下载文件?
代码是:
$myad = $_GET['myad'];
$glob_string = realpath('/foldera/folderb/folderc'). DIRECTORY_SEPARATOR .$myad;
header('Content-Type: application/excel');
$headerstring = 'Content-Disposition: attachment; filename='.$glob_string;
header($headerstring);
readfile($myad);
Run Code Online (Sandbox Code Playgroud)
更新的代码(来自答案):
$myad = $_GET['myad'];
$glob_string = realpath('/mit/mit_tm/mrl_bol'). DIRECTORY_SEPARATOR .$myad;
header('Content-Type: application/excel');
$headerstring = 'Content-Disposition: attachment; filename='.$myad;
header($headerstring);
readfile($glob_string);
Run Code Online (Sandbox Code Playgroud) 在MySQL查询中,我使用timediff/time_to_sec函数来计算两个日期之间的总分钟数.
例如:
2010-03-23 10:00:00
-
2010-03-23 08:00:00
= 120 minutes
Run Code Online (Sandbox Code Playgroud)
我想要做的是排除在所选时间范围内发生的任何中断.
例如:
2010-03-23 10:00:00
-
2010-03-23 08:00:00
-
(break 08:55:00 to 09:10:00)
= 105 minutes
Run Code Online (Sandbox Code Playgroud)
有没有一种好方法可以在不使用一长串嵌套IF语句的情况下执行此操作?
UPDATE1:
澄清 - 我试图计算用户完成给定任务所需的时间.如果他们喝咖啡休息时间,则需要排除时间段.咖啡休息时间是固定的.
对于.NET(Winforms)应用程序,是否有任何翻转时钟控件?
理想情况下,其外观类似于BlackBerry Bold上的外观:
替代文字http://images.crackberry.com/files/u3/reviewimages/blackberry9000c/lgclock3.jpg
更新1:
通过此SO链接,我向项目添加了一个元素主机,以承载@Shane提到的WPF逆时针。
更新2:
我遵循的几个步骤:
在表单加载事件中添加:
//create retroclock
RetroClock rc = new RetroClock();
//add retroclock to element host
elementHost1.Child = rc;
更新3:
造型时钟
//style clock
rc.Height = 30;
rc.IncludeLeadingZero = true;
rc.IsAmPmVisible = true;
rc.FontSize = 60;
rc.HorizontalAlignment = System.Windows.HorizontalAlignment.Center;
rc.TimeFormat = TimeFormats.Hour12;
Run Code Online (Sandbox Code Playgroud) 当用户选择按钮时,会向表单添加自定义用户控件.此用户控件提供输入某些值的功能.
在更改主窗体上的值之前,如何等待用户控件完成?
我在考虑这样的事情:
customControl ylc = new customControl();
ylc.Location = new Point(11, 381);
ylc.Parent = this;
ylc.BringToFront();
if(ylc.ShowDialog() == DialogResult.OK)
{
this.lblSomeText.Text = ylc.PublicPropertyValue
}
Run Code Online (Sandbox Code Playgroud)
UPDATE1
用户控件无法添加到自己的表单中.在某些形式上,它是"嵌入式",在其他形式上,它是根据需要动态创建的.
UPDATE2
这个SO 链接很有帮助.
我的最终解决方案看起来像(我在'完成'时隐藏了用户控件):
customControl ylc = new customControl();
ylc.Location = new Point(11, 381);
ylc.Parent = this;
ylc.BringToFront();
ylc.VisibleChanged += new EventHandler(ylc_VisibleChanged);
ylc.Show();
Run Code Online (Sandbox Code Playgroud)
然后这段代码进入'Visiblechanged'事件:
if(ylc.ShowDialog() == DialogResult.OK)
{
this.lblSomeText.Text = ylc.PublicPropertyValue
}
Run Code Online (Sandbox Code Playgroud) 我有一个结构(.NET 3.5):
struct ColumnHeadings
{
public string Name ;
public int Width ;
} ;
Run Code Online (Sandbox Code Playgroud)
当我尝试为该结构分配值列表时,我得到一个'无法隐式转换类型字符串/ int到...':
private void doSomething()
{
ColumnHeadings[,] ch = new ColumnHeadings[,]{{"column1",100},
{"column2",100},{"column3",100}};
}
Run Code Online (Sandbox Code Playgroud)
结构值是否可以与多维数组相同的方式分配?或者我需要使用?分配值:
ch.Name = "column 1";
Run Code Online (Sandbox Code Playgroud)
更新:
感谢Marc的出色反馈,正确的解决方案是:
结构:
struct ColumnHeadings
{
private readonly string name;
private readonly int width;
public string Name { get { return name; } }
public int Width { get { return width; } }
public ColumnHeadings(string name, int width)
{
this.name = name;
this.width = width;
} …Run Code Online (Sandbox Code Playgroud) 我有一个使用JsonResult操作而不是ActionResult 的创建页面.在ActionResult操作中,错误显示在违规字段旁边的视图上.现在,JsonResult只返回一个显示在警告框中的字符串.
我可以在视图上显示ModelState错误吗?
控制器
[HttpPost]
public JsonResult Create(Tload tload)
{
if (ModelState.IsValid)
{
...save changes
return Json(new { Success = 1, TransloadID = transload.TransloadID, ex = "" });
}
else
{
string totalError = "";
foreach (var obj in ModelState.Values)
{
foreach (var error in obj.Errors)
{
if (!string.IsNullOrEmpty(error.ErrorMessage))
{
totalError = totalError + error.ErrorMessage + Environment.NewLine;
}
}
}
return Json(new { Success = 0, ex = new Exception(totalError).Message.ToString()});
}
Run Code Online (Sandbox Code Playgroud)
jquery/javascript代码在视图中
function Save() {
// Step 1: …Run Code Online (Sandbox Code Playgroud) 使用MySQL 5
我有这样一张桌子:
date (varchar)
door (varchar)
shift (varchar)
route (varchar)
trailer (varchar)
+ other fields
Run Code Online (Sandbox Code Playgroud)
此表包含用户生成的内容(从另一个"主"表复制),并防止用户创建相同数据超过1倍,表具有基于上面指定的字段创建的唯一索引.
问题是"重复预防"索引不起作用.
用户仍然可以添加重复记录而不会报告错误.
这个问题是由于我对索引的工作原理不了解吗?
要么
是否可能与主键字段冲突(自动增量int)?
CREATE TABLE如下所示:
CREATE TABLE /*!32312 IF NOT EXISTS*/ "tableA" (
"Date" varchar(12) default NULL,
"door" varchar(12) default NULL,
"Shift" varchar(45) default NULL,
"route" varchar(20) default NULL,
"trailer" varchar(45) default NULL,
"fieldA" varchar(45) default NULL,
"fieldB" varchar(45) default NULL,
"fieldC" varchar(45) default NULL,
"id" int(10) unsigned NOT NULL auto_increment,
PRIMARY KEY ("id"),
UNIQUE KEY "duplicate_preventer" ("Date","door","Shift","route","trailer"),
Run Code Online (Sandbox Code Playgroud)
重复的行是:
date door …Run Code Online (Sandbox Code Playgroud) 我有一个struct-array,其中包含可以运行的不同报告的详细信息.每个报告调用一个不同的方法,目前程序必须手动检查选定的报告值以专门调用适当的方法.
我想将方法名存储在struct-array中,然后让程序在匹配时调用该方法.这可能吗?
目前:
if (this.cboSelectReport.Text == "Daily_Unload")
{
reportDailyUnload();
}
Run Code Online (Sandbox Code Playgroud)
理想的情况是:
if(this.cboSelectReport.Text == MyArray[i].Name)
{
something(MyArray[i].MethodName);
}
Run Code Online (Sandbox Code Playgroud)
UPDATE
我厌倦了下面的一些建议,但没有一个有效.他们没有工作可能是因为我的程序结构如何.
我想替换以下内容:
txt1.Text = ""
txt2.Text = ""
txt3.Text = ""
txt4.text = ""
...continues for quite awhile
Run Code Online (Sandbox Code Playgroud)
附:
Dim cCont As Control
For Each cCont In Me.Controls
If TypeName(cCont) = "TextBox" Then
'reset textbox value
???
End If
Next cCont
Run Code Online (Sandbox Code Playgroud)
如何使用通用"控件"来引用文本框?