我想将字典绑定到 datagridview。不幸的是,Dictionary 没有实现所需的接口,因此创建了一个 List>。
本质上,我希望将其绑定到带有 datagridviewcomboboxcolumns 的 datagridview。第 1 列保存键,第 2 列保存值。
我已经尝试了很多变化,但我似乎无法做到这一点。我尝试绑定到列、单个单元格和 datagridview 本身。有人知道怎么做这个吗?
编辑:澄清它没有绑定到问题的对象。似乎绑定到列表没问题,例如,如果我在列表中有 4 个项目,则添加 4 行,但值为空。这是示例代码:
additionalMetadata1.dataGridView1.DataSource = animal.AdditionalMetaData;
foreach (DataGridViewRow row in additionalMetadata1.dataGridView1.Rows)
{
DataGridViewCustomComboCell cell = row.Cells[0] as DataGridViewCustomComboCell;
cell.DataSource = animal.AdditionalMetaData;
((DataGridViewCustomComboColumn)additionalMetadata1.dataGridView1.Columns[0]).DisplayMember = "Key";
((DataGridViewCustomComboColumn)additionalMetadata1.dataGridView1.Columns[0]).ValueMember = "Key";
((DataGridViewCustomComboColumn)additionalMetadata1.dataGridView1.Columns[0]).DataPropertyName = "Key";
}
Run Code Online (Sandbox Code Playgroud)
谢谢。
我创建了一个带有 4 列的 Datagridview,EJ:
ID, Name, Quantity, other
Run Code Online (Sandbox Code Playgroud)
但我想从 MySQL EJ 填充这 3 列:
item_id, item_name, item_quantity
Run Code Online (Sandbox Code Playgroud)
我尝试了这个代码:
Using cn As New MySqlConnection("server=10.10.2.1;userid=root;password=gf-159753;database=quick_admon")
cn.Open()
Dim da As New MySqlDataAdapter("SELECT * from qa_items", cn)
' DataTable
Dim dt As New DataTable
' llenar el DataTable
da.Fill(dt)
' enlazar el DataTable al BindingSource
list_items.DataSource = dt
With list_items
.MultiSelect = False
.SelectionMode = DataGridViewSelectionMode.FullRowSelect
.DataSource = list_items.DataSource
End With
End Using
Run Code Online (Sandbox Code Playgroud)
但这会创建新列并且不会写入现有列,花了一段时间寻找解决方案但只找到这样的方法。
我在 C# Winform 项目中有一个 datagridview。此 datagridview 用于将值插入到数据库中。每列最多匹配相应的 db 列。
其中一列是 DateTime 列。我想“验证”这个日期以确保它的格式正确。理想情况下,您会离开单元格,它会将其转换为我选择的日期时间格式。
我使用了一系列事件来尝试创建此功能,但一直遇到问题。我一直遇到的问题是,当事件触发时,该值尚未存储在单元格中。因此,当我做这样的事情时,例如:
private void Grid_Modify_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
if (Grid_Modify.Columns[e.ColumnIndex].Name == "DateTime")
{
Grid_Modify[e.ColumnIndex, e.RowIndex].Value =
Convert.ToDateTime(Grid_Modify[e.ColumnIndex, e.RowIndex].Value).ToString("YYYY-MM-DD hh:mm:ss");
}
}
Run Code Online (Sandbox Code Playgroud)
问题是,它转换为日期时间的值是原始单元格值——而不是我刚刚输入的新值。我认为这是因为在更新单元格值之前触发了事件。
问题是:当我更改日期的值时,格式化日期的最佳方式是什么?
我尝试过的其他事件是:CellLeave、CellValueChanged、CellValidated 和 CellEndEdit。
注意: CellValueChanged 事件是唯一可以实际获取新单元格值的事件,但是,当我更改事件处理程序中的值时,它会陷入无限循环。
我想知道DataGridView可以呈现 OK的最大行数是多少,我的意思是 UI 可用且响应足够快。我想知道这一点,因为我有一个大约 1400 行的表(不是现在,但将来会如此),我想知道它是否可以呈现正常,或者我应该在支持某些导航控件的情况下部分加载行。
PS:我不需要确切的数字,只需要根据您的经验得出的数字。谢谢!
我一直在为我的 datagridview 修复类似 textChanged 的事件,但我无法获得我想要的结果。每当我更改其单元格上的文本时,dataGridView1 都必须过滤 dataGridView2 的内容。
这可以过滤我的 dataGridView2 的内容,但在此之前我必须单击 dataGridView1 外的光标/按 Tab。这是我的代码:
Private Sub DataGridView1_CellEndEdit(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellEndEdit
Dim con1 As OleDbConnection = con
con1.Open()
Dim dt As New DataTable
Dim _command As OleDbCommand = New OleDbCommand()
_command.Connection = con1
_command.CommandText = "SELECT * FROM table_name WHERE " & likeContent & ""
dt.Load(_command.ExecuteReader)
Me.dgv.DataSource = dt
con1.Close()
End Sub
Run Code Online (Sandbox Code Playgroud)
“likecontent”是我在 dataGridView1 上存储文本的地方。
如何仅通过 dataGridView1 中的 textChanged 事件来更新我的 dataGridView2?
我有一个Windows窗体应用程序,上面有6个datagridviews.我想知道用户是否点击了其中一个,点击了哪个datagridview.我为每个datagridviews都有单元格单击事件.
我想在这里使用它:
dgvArray[i].Rows[j].Cells[4].Value = GlobalData[j + i * 8 + interface * 64];
Run Code Online (Sandbox Code Playgroud)
dgvArray是一个6的数组DataGridViews.
我是 winforms 的新手。我无法发布任何代码,因为我在 winforms 中为我的 gridview 使用了设计器。我有 2 列。在 1 列中,链接名称存在,而其他隐藏的列具有链接名称实际链接。例如,如果在第 1 列中 Google 是这样写的,则第 2 列(隐藏)中包含http://www.google.com。当我单击带有链接名称的 datagridview 单元格时,链接应该在浏览器中打开。有没有办法做到这一点。我用谷歌搜索,但我得到的只是 这个。请帮忙。
我在将存储过程加载到 DataGridView 中时遇到问题。我已经搜索了一个答案,但是我的代码看起来与我找到的每个答案都相似。存储过程在我添加的另一个 DataGridView 中运行,我将它作为固定数据源包含在其中。我是 C# 的新手。谁能看到我哪里出错了?
private void Form1_Load(object sender, EventArgs e)
{
DataTable dt = new DataTable();
SqlConnection myConn = new SqlConnection("Data Source=SERVER-SQL1;Initial Catalog=OPSystem;Integrated Security=True");
myConn.Open();
SqlCommand myCmd = new SqlCommand("spCustomers", myConn);
myCmd.CommandType = CommandType.StoredProcedure;
SqlDataAdapter da = new SqlDataAdapter(myCmd);
da.Fill(dt);
dataGridView1.DataSource = da;
}
Run Code Online (Sandbox Code Playgroud) 我的表单包含一个button名为close。我只是将下面的代码放在关闭按钮中,单击...然后第二个代码集用于表单关闭。但是,如果我执行此当我点击close button 一个MessageBox会出现。当我单击“是”按钮时,该窗体未关闭,但是如果我第二次单击了“是”按钮,则该窗体将关闭。是什么原因?你能帮我么?
private void btnClose_Click(object sender, EventArgs e)
{
if (MessageBox.Show("Are You Sure You Want To Close This Form?",
"Close Application",
MessageBoxButtons.YesNo) == DialogResult.Yes)
{
// MessageBox.Show("The application has been closed successfully.",
// "Application Closed!",
// MessageBoxButtons.OK);
System.Windows.Forms.Application.Exit();
}
else
{
this.Activate();
}
}
-------------------------------------
private void frminventory_FormClosing(object sender, FormClosingEventArgs e)
{
if (MessageBox.Show("Are You Sure You Want To Close This Form?",
"Close Application",
MessageBoxButtons.YesNo) == …Run Code Online (Sandbox Code Playgroud) datagridview ×10
c# ×8
winforms ×5
vb.net ×2
data-binding ×1
events ×1
ienumerator ×1
linq ×1
mysql ×1
performance ×1
textchanged ×1