c# - 如何在c#中动态创建datagridview
问题描述
我正在创建一个工具,用户可以在其中添加Data source
和名称data base
以连接其数据库,然后表及其列将显示该连接的数据库,然后用户可以选择列以生成报告。
我所做的: 我完成了连接数据库并获取表和列。
我现在需要做什么: 但现在我需要这样的东西
显示表格及其列,添加按钮也将位于每列的前面,当用户添加任何列时,它将显示类似这样的内容
然后单击“生成报告”按钮,它将生成一个报告
这是代码:
private void button1_Click_1(object sender, EventArgs e)
{
datasource = "Data Source=" + datasourceTxt.Text;
connectionString = datasource + ";" + "Initial Catalog=" + databaseTxt.Text + ";Integrated Security=True";
using (SqlConnection conn = new SqlConnection(connectionString))
{
conn.Open();
List<string> tables = new List<string>();
List<string> columns = new List<string>();
DataTable dt = conn.GetSchema("Tables");
foreach (DataRow row in dt.Rows)
{
string tablename = (string)row[2];
tables.Add(tablename);
}
conn.Close();
int tableCount = Convert.ToInt32(tables.Count.ToString());
for (var i = 0; i < tableCount; i++)
{
var sortedNames = GetColumnNames(connectionString, tables[i].ToString()).OrderBy(x => x);
foreach (var columnName in sortedNames)
{
columns.Add(columnName);
}
}
获取列方法:
private IEnumerable<string> GetColumnNames(string conStr, string tableName)
{
var result = new List<string>();
using (var sqlCon = new SqlConnection(conStr))
{
sqlCon.Open();
var sqlCmd = sqlCon.CreateCommand();
sqlCmd.CommandText = "select * from " + tableName + " where 1=0"; // No data wanted, only schema
sqlCmd.CommandType = CommandType.Text;
var sqlDR = sqlCmd.ExecuteReader();
var dataTable = sqlDR.GetSchemaTable();
foreach (DataRow row in dataTable.Rows) result.Add(row.Field<string>("ColumnName"));
}
return result;
}
如果你们中的任何人知道如何做到这一点,请提供帮助。
解决方案
推荐阅读
- python - npm install 给出错误:[节点版本:16.2.0 和 npm 版本:7.13.0]
- javascript - 在 React 应用程序中找不到错误
- angular - 如何为 animationBuilder.build 方法编写 jasmin/karma 测试用例
- reactjs - 如何在订阅时设置消息样式?反应邮件黑猩猩订阅
- javascript - 当我有滚动捕捉类型时,滚动捕捉剂量工作:y; 在身体标签上
- objective-c - Mac OS:监视文件夹或应用程序的删除
- curl - 尝试在 Postman 中导入 Curl 请求时出错
- android - 有没有办法让每个构建的 $HOME/.gradle/gradle.properties 的路径都不同?
- vaadin - 升级到 14.6.0 后“Java 实时重新加载不可用”
- database - 规范一个简单的图书馆系统