如何将数据表传递到button_click函数中?

How can I pass a datatable into a button_click function?

提问人:Zay 提问时间:2/25/2023 最后编辑:Zay 更新时间:2/26/2023 访问量:79

问:

我正在使用对数据库的查询来填充数据表。我将所有查询存储在一个静态类中,然后在另一个类中对这些表进行排序/过滤。我在将生成的数据表拉入另一个类时遇到了问题,我正在该类中执行涉及数据的所有排序、任何计算等。如何在 C# 中将生成的表拉取到 button_click 方法中?

我的一个疑问:

string HeaderString =
            @" SELECT
            ID,
            model,
            series,
            short_name,
            published,
            VALID_DTTM
            FROM
            HEAD_TABLE;            
            
DataTable Headerdtbl = null;

if(IsConnected()) {
    try {
        string HeaderQuery = string.Format(HeaderString, Model);
        OracleDataAdapter HeaderdataAdapter = new OracleDataAdapter(HeaderQuery, A.ServerConnection.oracleConnection);
        Headerdtbl = new DataTable("HEAD");
        HeaderdataAdapter.Fill(Headerdtbl);
        }
        catch(Exception ex) {
            using ExceptionDialog exDialog = new(ex);
            exDialog.ShowDialog();
            Headerdtbl = null;
            }
        }
 return Headerdtbl;

我收到错误的代码:

(这是在不同的类中。

private void PopulateButton_Click(object sender, EventArgs e)
    {

        // Sort data

        DataView HeaderView = new(Headerdtbl);
        HeaderView.Sort = "PUBLISHED ASC";
    
        HeaderView = new DataView(Headerdtbl);
        HeaderView.Sort = "SHORT_NAME ASC";
    
        HeaderView = new DataView(Headerdtbl);
        HeaderView.Sort = "MODEL ASC";
        Headerdtbl = HeaderView.ToTable();

错误我得到:CS0103 名称“标识符”在当前上下文中不存在。

我知道最明显的解决方案是将查询与按钮单击代码一起放入,但不幸的是,我无法将查询移出它的类,因为这是从数据库中查询的指定位置。我需要一种方法将已建立的表格拉入我的按钮单击方法。有什么好方法可以做到这一点吗?

C# 参数传递 按钮Click

评论

0赞 Maxim 2/25/2023
使用 mvvm 模板可以解决类似的任务
0赞 Maxim 2/25/2023
创建一个存储库类,该类将实现所有必要的数据工作,您只需创建其实例(使用单例)或获取依赖项。
0赞 Flydog57 2/25/2023
我很确定你得到的错误我不会.我很确定,在您实际得到的错误中,占位符被代码中的变量名称替换。不过,该错误的文档中确实存在"CS0103 The name 'identifier' does not exist in the current context."'identifier''identifier'
0赞 Zay 2/25/2023
@Flydog57是的,你是对的。该错误使用 Headerdtbl 代替标识符。抱歉,我直接从解释错误的帮助页面复制了错误消息,并且没有切换出有错误的数据表的标识符。
0赞 Zay 2/25/2023
@Maxim你有一个好的链接,我可以用它来参考你所描述的内容吗?我才刚刚起步,所以我没有个人参考框架来理解你所描述的内容。我试着在谷歌上搜索它,但我认为我没有使用正确的搜索词,因为我没有得到很好的点击。

答:

0赞 Imamul Karim Tonmoy 2/25/2023 #1

这是 Microsoft 的指南

https://learn.microsoft.com/en-us/dotnet/api/system.data.dataview.sort?view=net-7.0

您不需要每次都执行此行

Headerdtbl = HeaderView.ToTable();

相反,您可以在方法的末尾使用它

gridview1.DataSource= HeaderView.ToTable();

评论

0赞 Zay 2/25/2023
谢谢,这简化了代码块!关于如何将数据表拉入button_click的任何输入?