如何重新加载 WPF 网格

Posted

技术标签:

【中文标题】如何重新加载 WPF 网格【英文标题】:How to reload WPF grid 【发布时间】:2019-02-09 01:24:26 【问题描述】:

This is my code 我正在开发一个 WPF 应用程序来在单击更新按钮时更新数据库。我还想在单击更新按钮后将我从数据库获取的数据重新加载到网格中...请帮助我解决这个问题

【问题讨论】:

How to refresh datagrid in WPF的可能重复 我在问网格。不是数据网格 【参考方案1】:

我刚刚将第一次加载窗口时用来调用动态按钮的方法再次调用到按钮单击事件。因此,通过从数据库中获取更新的列表再次创建了按钮。

【讨论】:

【参考方案2】:

    按钮点击事件代码

    private void btnsave_Click(object sender, RoutedEventArgs e)
    
        try
        
            if (!IsPageValid())
            
    
            
            else
            
                feesGroup_Model.Name = txtname.Text;
                feesGroup_Model.Description = txtdiscription.Text;
    
                feesGroups_ViewModel.FeesGroup_Insert(feesGroup_Model);
                lstvwCustomerslist.ItemsSource = feesGroups_ViewModel.BindFeesGroupData(txtSearch1.Text);
    
                txtname.Text = string.Empty;
                txtdiscription.Text = string.Empty;
                lblmsg.Visibility = Visibility.Hidden;
                errorgrid.Visibility = Visibility.Collapsed;
    
                bindpaggination();
            
        
        catch (Exception ex)
        
            var abc = ex.ToString();
            throw;
        
    
    

【讨论】:

【参考方案3】:
    :GetData() 用于从数据库绑定数据 :bindpaggination() 用于刷新数据网格的分页和数据。 :在按钮单击事件的插入或更新方法之后调用 bindpaggination()。 :lstvwCustomerslist = 您的数据网格名称

    :空模型:ObservableCollection list = new ObservableCollection();

    private void bindpaggination()
    
        var myList = GetData();
        lstvwCustomerslist.ItemsSource = myList.Take(numberOfRecPerPage);
        int count = myList.Take(numberOfRecPerPage).Count();
        lblpageInformation.Content = count + " of " + myList.Count;
    
    private ObservableCollection<FeeType_Model> GetData()
    
        ObservableCollection<FeeType_Model> list = new ObservableCollection<FeeType_Model>();
        var dt = feesType_ViewModel.BindALLFeesTypeData();
        for (int i = 0; i < dt.Rows.Count; i++)
        
            FeeType_Model feeType_Model = new FeeType_Model();
            feeType_Model.Id = Convert.ToInt32(dt.Rows[i]["id"]);
            feeType_Model.Type = dt.Rows[i]["type"].ToString();
            feeType_Model.Code = dt.Rows[i]["code"].ToString();
            feeType_Model.Is_active = dt.Rows[i]["is_active"].ToString();
            feeType_Model.Created_at = dt.Rows[i]["created_at"].ToString();
            feeType_Model.Description = dt.Rows[i]["description"].ToString();
    
            list.Add(feeType_Model);
        
        return list;
    
    

【讨论】:

如果您没有在 WPF 代码中使用 MVVM。在最初插入或更新数据后,您必须将 datagrid 设为空,然后再次绑定 DataGrid 在使用 datagridname.items.refresh() 刷新 datagrid 之后,它会在 datagrid 中显示更新的数据。 我想知道重新加载网格的方式.. 不是数据网格 是的,上面的代码只是示例如果您想在数据网格中使用数据库,如何重新加载数据。您还可以刷新您的 wpf 网格,只需将 X:NAME 传递给网格,并在按下插入或更新按钮单击事件时在构造函数中使用其名称,调用构造函数并刷新 GRID(也关闭所有打开该网格的所有选项卡)。我希望它对你有用。 请把你的sn-p或代码发给我好吗?如此有效,我将帮助您解决您的问题 我已将那个插入驱动器并在此处链接.. 抱歉,我不知道共享代码的另一种方式

以上是关于如何重新加载 WPF 网格的主要内容,如果未能解决你的问题,请参考以下文章

如何在 WPF 窗口中重新加载所有本地化字符串?

如何在不重新加载网格的情况下将行添加到下一页中的 jqGrid?

内存映射文件到 WPF 网格

Dojo 使用 JsonRestStore 重新加载网格数据

如何从头开始创建一个快速的 WPF Datagrid 控件?

当我重新加载网格和存储时,extjs 缓存具有相同名称的图片