标签: datagridview

将字典绑定到 Datagridview

我想将字典绑定到 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)

谢谢。

c# data-binding datagridview

0
推荐指数
1
解决办法
7856
查看次数

从 MySQL 数据 VB.NET 填充 datagridview 中的特定列

我创建了一个带有 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)

但这会创建新列并且不会写入现有列,花了一段时间寻找解决方案但只找到这样的方法。

mysql vb.net datagridview

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

编辑后的 ​​DataGridView C# 编辑模式值格式化

我在 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 事件是唯一可以实际获取新单元格值的事件,但是,当我更改事件处理程序中的值时,它会陷入无限循环。

c# events datagridview event-handling winforms

0
推荐指数
1
解决办法
2167
查看次数

DataGridView 可以呈现的最大行数是多少?

我想知道DataGridView可以呈现 OK的最大行数是多少,我的意思是 UI 可用且响应足够快。我想知道这一点,因为我有一个大约 1400 行的表(不是现在,但将来会如此),我想知道它是否可以呈现正常,或者我应该在支持某些导航控件的情况下部分加载行。

PS:我不需要确切的数字,只需要根据您的经验得出的数字。谢谢!

c# performance datagridview winforms

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

如何在 datagridview 中执行 textChanged 事件?

我一直在为我的 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?

vb.net datagridview textchanged

0
推荐指数
1
解决办法
7633
查看次数

如何识别单击哪个datagridview?

我有一个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.

c# datagridview

0
推荐指数
1
解决办法
47
查看次数

DataGridView和IEnumerable

我正在使用LINQtoCsv(信息在这里),并遇到了障碍.

我有一个IEnumerable设置,就像那个页面说: IEnumerable<Character> characters = cc.Read<Character>(file, inputFileDescription);

我不知道该怎么做是从IEnumerable转到将在datagridview上显示的东西.我之前从未使用过LINQ或IEnumerable,很抱歉,如果这看起来有点愚蠢.

我的代码与示例在网站上的方式几乎相同(名称明显不同),因此最简单地假装这些示例是我的代码.

c# linq ienumerator datagridview winforms

0
推荐指数
1
解决办法
2084
查看次数

从 winforms gridview 列在浏览器中打开链接

我是 winforms 的新手。我无法发布任何代码,因为我在 winforms 中为我的 gridview 使用了设计器。我有 2 列。在 1 列中,链接名称存在,而其他隐藏的列具有链接名称实际链接。例如,如果在第 1 列中 Google 是这样写的,则第 2 列(隐藏)中包含http://www.google.com。当我单击带有链接名称的 datagridview 单元格时,链接应该在浏览器中打开。有没有办法做到这一点。我用谷歌搜索,但我得到的只是 这个。请帮忙。

c# datagridview winforms

0
推荐指数
1
解决办法
3221
查看次数

从存储过程加载 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)

c# stored-procedures datagridview

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

关闭按钮无法正确关闭表单

我的表单包含一个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)

c# datagridview winforms

0
推荐指数
1
解决办法
80
查看次数