小编ImG*_*reg的帖子

从DataTable创建数据透视表

我正在使用C#winforms创建一个需要将数据表转换为数据透视表的应用程序.我让数据透视表从SQL端运行良好,但从数据表创建它似乎比较棘手.我似乎无法为此找到.NET中的任何内容.

注意:我必须在.NET端执行此操作,因为我在创建数据透视之前操作数据.

我读过一些做过类似事情的文章,但我很难将它们应用到我的问题中.

*我有一个数据表,其中包含"StartDateTime","Tap"和"Data"列.应将startdates组合在一起并平均数据值(有时每个startdate有多个数据值).表格如下所示:

在此输入图像描述

数据透视表应该输出如下图所示(尽管不是舍入值).列号是不同的抽头编号(每个唯一编号一个).

数据透视表

如何从数据表创建此数据透视表?

编辑:忘记提及,这些抽头值并不总是从1-4开始,它们的数量和价值各不相同.

c# datatable pivot pivot-table winforms

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

将数字格式化为特定的QString格式

我有一个关于将十进制数格式化为某种QString格式的问题.基本上,我的程序中有一个输入框,可以取任何值.我希望它将此框中的值转换为格式"+05.30"(基于值).该值将限制为+/- 99.99.

一些例子包括:

.2 - > +00.02

-1.5 - > -01.50

9.9 - > +09.90

我正在考虑使用这样的转换器,但它会有一些明显的问题(没有前导0,没有前导+符号).

QString temp = QString::number(ui.m_txtPreX1->text().toDouble(), 'f', 2);
Run Code Online (Sandbox Code Playgroud)

这个问题有一些相似之处,但并没有将前端和后端填充连接在一起.

使用零填充(前导零)将int转换为QString

有关如何解决这个问题的任何想法?非常感谢您的帮助!谢谢!

c++ qstring qt string-formatting

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

RadioButtonList OnSelectedIndexChanged

我正在寻找处理在ASP.net RadioButtonList(后面的C#代码)上选择的索引更改的最佳方法.我有3个列表项.对于第一个,我希望它在页面上显示隐藏的asp:文本框,而另外2个将隐藏文本框.

//asp.net side
<asp:RadioButtonList ID="_indicatorAckType" runat="server" RepeatDirection="Horizontal"
                enabled="true" OnSelectedIndexChanged="onAckTypeChanged">
    <asp:ListItem Text="None" />
    <asp:ListItem Text="SHOW" />   
    <asp:ListItem Text="HIDE" />
</asp:RadioButtonList>

//code behind
protected void onAckTypeChanged(object sender, EventArgs e)
{
    if (_indicatorAckType.SelectedItem.Text == "SHOW")
        _myTextboxID.Visible = true;
    else
        _myTextboxID.Visible = false;
}
Run Code Online (Sandbox Code Playgroud)

我最初尝试使用onclick事件处理程序,但我被告知ListItem不能使用带单选按钮项的onclick事件.我在这做错了什么?这不会引发任何错误或有任何明显的问题.我已经尝试使onSelectedIndexChanged除了显示文本框之外什么都不做,但也不起作用.

任何帮助表示赞赏!感谢大家.

c# asp.net radiobuttonlist event-handling

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

查询在两天之间选择

我正在尝试构建一个将根据DateTime列进行选择的查询SyncDate.

作为一些背景知识,我查询的表每天都会在每天完全相同的时间内获得数千个导入.我想找到那些在"常规"时间没有导入的条目.

因此,我想查询DateTime列中的时间在两次之间的位置:在任何日/月/年期间,例如14:00-14:30(2-230).

SELECT * FROM MyTable
WHERE DatePart(SyncDate, ..?) BETWEEN (14:00..?) and (14:30..?)
Run Code Online (Sandbox Code Playgroud)

DatePart功能似乎是我所需要的,但我不知道如何将它应用到这种情况.非常感谢哦,你的帮助很棒.

编辑:我错了,我正在运行SQL-Server-2005作为我的后端.抱歉!

sql t-sql sql-server-2005

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

SqlDataReader从SQL Server 2008读取一些数据类型?

我在asp.net/c#程序中使用SQL Server 2008.我试图使用SqlDataReader从数据库中获取数据,但我不知道如何使用数据类型"bit".

//these are the assemblies i added manually
using System.Web.Script.Services;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;

SqlConnection conn2 = new SqlConnection(ConfigurationManager.ConnectionStrings["ucsConnectionString"].ConnectionString);
SqlDataReader rdr2 = null;
conn2.Open();

SqlCommand cmder = new SqlCommand("usp_Device_GetBy_DeviceID", conn2);
cmder.Parameters.AddWithValue("@ID", id);
cmder.CommandType = CommandType.StoredProcedure;
rdr2 = cmder.ExecuteReader();
rdr2.Read();

*insert datatype & var* = rdr2.GetSqlBit(rdr2.GetOrdinal("Line_Name"));
Run Code Online (Sandbox Code Playgroud)

我发现有几个网站引用了上面的"GetSqlBit",但显然它不是我正在使用的程序集的一部分.有什么建议我如何从SQL读取这个"位"数据类型?

我使用"GetSqlBinary"找到了类似的数据类型,但我不完全了解它是如何工作的,或者它是否适合这种情况?

每个人的持续帮助表示赞赏!

c# stored-procedures sqldatareader sql-server-2008

6
推荐指数
2
解决办法
2万
查看次数

在C#WinForms中设计自定义TabPage?

我有一个ac#WinForm应用程序,我需要在运行时生成TabPages.理想情况下,我想使用VS设计器设计这些标签页,但似乎我不能直接这样做,因为我无法从工具箱中拖放它(有另一种方式吗?).

我有两个通用的tabpages,我将多次使用.一个包含一个简单的电子表格和一对文本框,另一个包含图形和几个文本框.这些页面最终会变得更复杂.我正在寻找最好的方法.我目前只是为每个标签页创建自定义类并将其设置为TabPage基类.例如:

public partial class SpreadsheetTabPage : TabPage{} 
Run Code Online (Sandbox Code Playgroud)

我读到用户控件提供某种形式的替代方案,但我并不真正理解使用它与我的方法相比的优势.

所以要清楚,我想知道您认为开发这些自定义tabpages的最佳方法及其原因.如果相关,请提供基本代码示例.我的方法并没有真正造成太多问题,但我发现稍后在这些页面上添加内容会很困难,特别是在没有使用设计器的情况下.

感谢您的帮助!

c# user-controls tabs winforms

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

DockStyle填充RunTime生成的控件

我正在尝试做一些非常简单的事情,这给了我C#Winforms的巨大问题.我在TabPage上有两个组框.一个停靠在右边,一个停靠在底部.我在页面上也有一个图表(System.Windows.Forms.DataVisualization.Charting).此图表是Dock.Fill页面上的剩余空间.

我第一次遇到图表隐藏在两个组框后面并仍然停靠填充整个页面的问题.但是,我发现我可以通过使用"BringToFront"(或重新排序文档大纲顺序)解决这个问题,然后图表正确停靠,并且没有与页面上的任何其他控件重叠.

但是,我试图在运行时向页面添加一个图表,它再次填充整个页面并隐藏在其他控件后面.我怎样才能做到这一点?

编辑:忘记提及,调用"BringToFront"将抛出异常"宽度必须大于0px".

chart_TapChart = new Chart();
chart_TapChart.Dock = DockStyle.Fill;
chart_TapChart.BringToFront();
GroupBox gp1 = new GroupBox();
gp1.Dock = DockStyle.Right;
GroupBox gp2 = new GroupBox();
gp2.Dock = DockStyle.Bottom;
this.Controls.Add(chart_TapChart);    <--this refers to tabpage
this.Controls.Add(gp1);
this.Controls.Add(gp2);
Run Code Online (Sandbox Code Playgroud)

c# controls dock winforms

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

DataGridView单元格对齐将无法工作

我有一个我在C#Winforms项目中使用的DataGridView.网格不会自动生成列.我已手动设置列名称和属性.

这包括单元格的DefaultCellStyle.我希望所有类型为DataGridViewCheckBoxColumn的单元格都居中对齐.我已在设计器中为此类型的每个列手动设置此对齐方式.加载datagridview时,这些更改不会显示.

作为我的下一个方法,我在DataBindingComplete事件中使用了下面的代码(也没有任何效果)

foreach (DataGridViewColumn dgvc in this.dgv_Automations.Columns)
{
    if(dgvc.CellType == typeof(DataGridViewCheckBoxCell))
        dgvc.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
}
Run Code Online (Sandbox Code Playgroud)

调试时,上面的代码已经将对齐设置为中心.但是,它仍然没有显示在网格上.

CAN得到它DataBindingComplete事件中,我做这样的事情在工作,如果:

foreach (DataGridViewRow dgvr in this.dgv_Automations.Rows)
{
    dgvr.Cells["isErrors"].Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
}
Run Code Online (Sandbox Code Playgroud)

但是,我有很多这样的列,这样做真的没有意义.编辑:我已经用这种方式实现了它,只有大约10行,在每个单元格上设置此属性有非常明显的延迟.

我的问题是:这样做的正确方法是什么?为什么设计师DefaultCellStyle不起作用?

c# styles datagridview alignment winforms

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

带插入和删除的公用表表达式

我正在处理一个存储过程,它涉及基于存储过程中先前查询的delete和insert子句.

我从一个WITH语句开始,将一些复杂的查询构建到一个简单的CTE中,以便在delete和insert语句中使用.

但是,我似乎无法在CTE之后同时运行insert和delete语句.

示例代码:

WITH temp AS (SELECT id, name FROM myDBTable)
DELETE FROM thisTable WHERE .....(based on "temp")
INSERT INTO otherTable (id, name) FROM (based on "temp")
Run Code Online (Sandbox Code Playgroud)

根据MSDN:

"CTE必须后跟一个引用部分或全部CTE列的SELECT,INSERT,UPDATE,MERGE或DELETE语句.还可以在CREATE VIEW语句中指定CTE作为视图定义SELECT语句的一部分".

它说是"单一"......陈述.我无法进行多次选择/删除/等等.如果没有,有什么办法吗?

单独两个查询都可以工作,但是您是否可以在单个存储过程中使用该CTE运行?

sql-server sql-server-2005 common-table-expression

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

在多个SQL查询中测试性能

我正在努力提高SQL-Server-2008上一些SQL查询的效率.有不同的方法来执行每个查询,我想找到最快的.

但是,我遇到的问题是我无法确定哪个实际上执行得更快.理想情况下,我可以一个接一个地运行每个查询,看看哪个运行最快.理想的情况下...

问题是,SQL对我来说太聪明了.在构造这些查询时,我多次运行它们.当我这样做时,查询的效率会自行提高.我想成像是因为SQL所做的一些幕后工作.这是什么?我怎么能避免呢?

例如,我运行一次查询,需要30秒.我再次运行它需要10秒.运行查询的次数越多,运行速度就越快.

那么..有没有"清除缓存"的方法或SQL中的等价物?我想准确地指出哪个查询实际上运行得更快.或者,什么是我想要的测试类型的最佳方法?

有关此主题的任何信息都将被接受为有效输入.

sql t-sql performance sql-server-2008

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