C# C WPF创建链接到从数据库收集的结果的加载进度条
我正在开发C WPF简单应用程序。此应用程序由几个要加载的帧组成,具体取决于数据库。 对于每个表,我都有一个框架,所有的框架都链接到主页,只是为了导航。我创建了加载框架,它由一个简单的进度条组成 这是导言,现在是我的问题 我想将ProgressBar链接到从数据库收集结果。 例如,此顺序:从Tablename中选择* 我希望在收集结果时启动ProgressBar。 我正在对我的数据库使用查询,以下是我的方法: 在我的DataAccessLayer上:C# C WPF创建链接到从数据库收集的结果的加载进度条,c#,wpf,database,progress-bar,loading,C#,Wpf,Database,Progress Bar,Loading,我正在开发C WPF简单应用程序。此应用程序由几个要加载的帧组成,具体取决于数据库。 对于每个表,我都有一个框架,所有的框架都链接到主页,只是为了导航。我创建了加载框架,它由一个简单的进度条组成 这是导言,现在是我的问题 我想将ProgressBar链接到从数据库收集结果。 例如,此顺序:从Tablename中选择* 我希望在收集结果时启动ProgressBar。 我正在对我的数据库使用查询,以下是我的方法: 在我的DataAccessLayer上: public static DataTabl
public static DataTable ExecuteTable(string query, CommandType type, params SqlParameter[] arr)
{
SqlConnection cn = new SqlConnection(con);
cn.Open(); // connection
SqlCommand cmd = new SqlCommand(query, cn);
cmd.CommandType = type;
cmd.Parameters.AddRange(arr);
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
da.Fill(dt);
return dt;
}
这张在我的表格上
public static DataTable SP_SELECTALLCATEGORIES()
{
DataAccessLayer.Open();
DataTable dt = DataAccessLayer.ExecuteTable("SP_SELECTALLCATEGORIES", CommandType.StoredProcedure);
DataAccessLayer.Close();
return dt;
}
如果我的表包含1000000条记录,我希望加载ProgressBar链接到加载状态,例如,当应用程序加载500000条时,ProgressBar应为50%
我认为这是因为当我们引用数据网格或绑定到一个元素时,我们只执行SQL语句,它返回结果,这样我们就可以知道这个结果加载了多少?感谢您使用SQL COUNT函数和DataTable.TableNewRow事件的组合。每次向表中添加新行时都会触发此事件,您可以使用它跟踪进度
tb.TableNewRow += (s,e) => progressBar.Value++;
da.Fill(tb);
首先,获取行计数
SqlCommand countCmd = new SqlCommand(@"SELECT COUNT(column) FROM table;", cn);
int numRows = (int)countCmd.ExecuteScalar();
progressBar.Minimum = 0;
progressBar.Maximum = numRows;
然后,连接DataTable.TableNewRow事件以跟踪进度
tb.TableNewRow += (s,e) => progressBar.Value++;
da.Fill(tb);
下次请尝试格式化你的文章,阅读一段已售出的文字实在太难了!谢谢你给我的建议,请展示你的实现。至少你的选择方法。我更新了主题并添加了我的选择方法。你能解释一下这句话吗。tb.TableNewRow+=s,e=>progressBar.Value++;s、e和=>指的是什么?它是一个lambda表达式,其中s和e是传递给匿名方法的变量。你的评论可能是一个很好的问题,如果它还不存在的话。查看一些有关lambda表达式和匿名方法的阅读资料。