有一种优雅的方法,将预定义的dataGridView列与SQL语句的结果绑定在一起吗?
例:
dataGridView1.Columns.Add("EID", "ID");
dataGridView1.Columns.Add("FName", "FirstName");
Run Code Online (Sandbox Code Playgroud)
有些SQL喜欢
SELECT t.FirstName AS FName, t.EmpID AS EID
FROM table t ...
Run Code Online (Sandbox Code Playgroud)
然后我打电话
dataGridView1.DataSource = someDataSet.Tables[0].DefaultView;
Run Code Online (Sandbox Code Playgroud)
最后一次调用将列添加到我的数据网格中,但我只想按列名绑定它而不是添加新列.
该示例将给出如下结果:
表列:ID,FirstName,FName,EID(ID和FirstName包含空单元格)
怎么弄这个:
Table columns: ID, FirstName or FirstName, ID
Run Code Online (Sandbox Code Playgroud)
最好的祝福!
有人可以告诉我为什么在运行此代码后我得到空行?
...
dataGridView.AutoGenerateColumns = false; //must be false, else getting additional columns from SQL
dataGridView.DataSource = dataSet.Tables[0].DefaultView;
Run Code Online (Sandbox Code Playgroud)
也试过了
dataGridView.Update();
Run Code Online (Sandbox Code Playgroud)
但没有工作.
行数没问题,但为什么我会得到空行?
我正在使用Winforms.
在c#中使用线程工作(方法)的最佳方法是什么?
例如:
假设我有一个表单,并希望从db加载数据.
My form controls:
- dataGridView (to show data from DB),
- label (loading status) and
- button (start loading).
Run Code Online (Sandbox Code Playgroud)
当我单击按钮时,我的表单将被冻结,直到任务完成.在任务完成之前,加载状态也不会改变.我认为异步线程会是答案吗?
所以我的问题是:处理这个问题的最佳方法是什么?我知道有很多关于线程的东西,但是它们之间的区别是什么?你如何使线程安全?
你是如何解决这类问题的?
最好的祝福.
我正在尝试这样做,但它不起作用.一些建议?
int test_i = 0;
DoSomethingThatTakesAgesAndNeedsToUpdateUiWhenFinished(test_i);
test_i <- still is 0 and not 3!!!
public void DoSomethingThatTakesAgesAndNeedsToUpdateUiWhenFinished(int i)
{
DisableUi();
m_commandExecutor.ExecuteWithContinuation(
() =>
{
// this is the long-running bit
ConnectToServer();
i = 3; <--------------------------
// This is the continuation that will be run
// on the UI thread
return () =>
{
EnableUi();
};
});
}
Run Code Online (Sandbox Code Playgroud)
为什么我不能将test_i设置为3?我也试过ref和out,但它不起作用.
我该怎么办才能修复它?
编辑
我试过这个,但是这个方法dataSet的ouside仍然是空的.
public static void Select(DataGridView dataGridView, ref DataSet dataSet, params object[] parameters)
{
var _dataSet = dataSet;
AsyncCommandExecutor commandExecutor = …Run Code Online (Sandbox Code Playgroud) 我有一个主要表单(frmMain),有一些按钮(button1, button2...).
然后我这样做:
object objectsContainer = frmMain; // <--now the object contains form base, button1, button2...
Run Code Online (Sandbox Code Playgroud)
我怎么能循环遍历我的对象中的所有包含项目来访问butto1,button2 ...... ???
我这样做了,但这不是我想要的.
foreach (PropertyInfo pInfo in objectsContainer.GetType().GetProperties())
{
}
Run Code Online (Sandbox Code Playgroud)
我想做这样的事情:
foreach (object objectFromForm in objectsContainer) // <--- how to do this looping an object (type of form)
{
//here is objectFromForm = base, button1, button2...
foreach (PropertyInfo pInfo in objectFromForm .GetType().GetProperties())
{
//here it's possible to access pInfo and its properties like size, name ...
}
}
Run Code Online (Sandbox Code Playgroud)
当我调试并查看objectsContainer的内容时,我想要所有"信息". …
我有一个自定义DataGridView控件,并希望在设计器(CellStyle构建器)中设置自定义列的文本格式.
假设我想将文本格式设置为大写.在搜索了这个之后,我找到了一些添加新事件然后更改文本格式的解决方案,但这不是我想要的.我想为所有设计的列添加一个新属性,并设置或更改文本格式.
这该怎么做?
谢谢,最好的问候.
是否有一种简单的方法来获取包含该属性的所有控件".Text"?
我能够获得所有"top level"控件,但是我的代码没有像menu items所有级别那样找到子控件等等.我也试过了"ctrl.HasChildren".
如何在运行时在Windows窗体中执行此操作?
我正在尝试使用右侧的按钮制作TextBox.我的代码:
public partial class TextBoxButton : TextBox
{
[Category("Button")]
[Description("Button in textbox")]
public Button Button
{
get
{
return this.btn;
}
set
{
this.btn = value;
}
}
protected override void OnCreateControl()
{
if (!this.Controls.Contains(this.btn))
{
this.Controls.Add(this.btn);
this.btn.Dock = DockStyle.Right;
}
base.OnCreateControl();
}
}
Run Code Online (Sandbox Code Playgroud)
每次当我启动appi并在按钮中设置一些文本或图像时,它都是空的.一些想法?
最好的祝福.
c# ×9
.net ×6
winforms ×4
datagridview ×3
.net-3.5 ×1
data-binding ×1
datasource ×1
datatable ×1
dataview ×1
lambda ×1
object ×1
sendmessage ×1