繁体   English   中英

Winform数据源更新

[英]Winform datasource update

我有一个gridcontrol,我想从数据库中获取数据。 我将数据源添加到网格,但列名不是我想要的。 因此,我打开xsd数据源文件并在configure选项上编辑列名。

在此输入图像描述

我更改了查询,然后select namesurname [NAME SURNAME] from employees

在此输入图像描述

在此之后,我想要这个; 当我编辑这个gridcontrol时,我按下保存按钮并更新数据库上的这些列,如tableadapter.update(..)

但我的更新不起作用。 我认为这是因为; 我曾经'命名'([NAME SURNAME])。

因为当我不像这样编辑列名时,更新正在运行。

无需更改数据库中的列名称。 您可以在C#中定义列名。

我对你的问题的最佳答案是,使用DataTable 没有必要从数据库中获取整个表,以便将它放在GirdControl上

您应该创建一个字符串查询StoredProcedure (sql-server)并从数据库中读取每个返回的行。

首先,我们创建一个DataTable

DataTable dt=new DataTable();

然后定义表列名称。

 dt.Columns.Add("name1");
 dt.Columns.Add("name2");
 dt.Columns.Add("name3");

最后开始从数据库中获取数据(StoredProcedure)

    try
    {
        using (SqlConnection con = new SqlConnection(connectionString))
        {
            using (SqlCommand cmd = new SqlCommand("myStoredProcedure"))
            {
                using (SqlDataAdapter sda = new SqlDataAdapter())
                {

                    cmd.CommandType = CommandType.StoredProcedure;
                    cmd.Parameters.AddWithValue("@param1", value1);
                    cmd.Parameters.AddWithValue("@param2", value2);
                    cmd.Parameters.AddWithValue("@param3", value3);
                    cmd.Connection = con;
                    con.Open();
                    SqlDataReader reader = cmd.ExecuteReader();
                    while (reader.Read())
                        {
                            DataRow dr = dt.NewRow();
                            dr[0] = reader[0].ToString();
                            dr[1] = reader[1].ToString();
                            dr[2] = reader[2].ToString();           
                            dt.Rows.Add(dr);
                        }
                    return true;
                }
            }
        }
    }
    catch(Exception e)
    {

        return false;          
    }

总之,我们有一个完整的表格来呈现

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM