【问题标题】:Datagrid entry in Xamarin FormsXamarin Forms 中的 Datagrid 条目
【发布时间】:2020-08-11 19:04:34
【问题描述】:

有谁知道可以实现如下图所示的条目吗?我想要一个数据网格来显示数据库中的数据。我曾尝试使用 Xamarin.Forms.Datagrid,但它不允许手动添加行。我的目标是以更容易查看的方式显示参数(类似于 excel 工作表格式),但 Xamarin 的控件确实有限......只是想知道是否有人知道其他方法来实现它?

这是我的数据网格代码。我只能用名称而不是行来创建列。

<dg:DataGrid HeaderHeight="50"
         BorderColor="#CCCCCC" HeaderBackground="#E0E6F8">
    <dg:DataGrid.Columns>
        <dg:DataGridColumn Title="Zone 1"/>
        <dg:DataGridColumn Title="Zone 2"/>
        <dg:DataGridColumn Title="Zone 3"/>
        <dg:DataGridColumn Title="Zone 4"/>
        <dg:DataGridColumn Title="Zone 5"/>
        <dg:DataGridColumn Title="Zone 6"/>
    </dg:DataGrid.Columns>
</dg:DataGrid>

【问题讨论】:

  • 但是如果你从数据库中加载数据,你为什么反对将这些值绑定到Xamarin.Forms.DataGrid

标签: xamarin.forms datagrid xamarin.forms.entry


【解决方案1】:

您不需要创建这种条目。

你想达到这样的效果吗?

如果是这样,您应该在您的 xaml 文件夹中添加此布局。

 <StackLayout>
        <!-- Place new controls here -->
        <dg:DataGrid ItemsSource="{Binding Teams}" SelectionEnabled="True"
               RowHeight="70" HeaderHeight="50" BorderColor="#CCCCCC" HeaderBackground="#E0E6F8">

            <dg:DataGrid.HeaderFontSize>
                <OnIdiom  x:TypeArguments="x:Double">
                    <OnIdiom.Tablet>15</OnIdiom.Tablet>
                    <OnIdiom.Phone>13</OnIdiom.Phone>
                </OnIdiom>
            </dg:DataGrid.HeaderFontSize>

            <dg:DataGrid.Columns>


                <dg:DataGridColumn Title="Team" PropertyName="Name" Width="2*"/>
                <dg:DataGridColumn Title="Win" PropertyName="Win" Width="0.95*"/>
                <dg:DataGridColumn Title="Loose" PropertyName="Loose"  Width="1*"/>
                <dg:DataGridColumn Title="Home" PropertyName="Home"/>
                <dg:DataGridColumn Title="Percentage" PropertyName="Percentage" StringFormat="{}{0:0.00}" />

            </dg:DataGrid.Columns>


        </dg:DataGrid>
    </StackLayout>

如果您不知道如何在此控件中添加行。例如,

&lt;dg:DataGridColumn Title="Team" PropertyName="Name" Width="2*"/&gt;

上面一行有三个属性,TitlePropertyNameWidth

Title: 表示一线队、胜利、松散、主场、百分比冠军。

Width:这个Column的平均宽度

如果你想添加爆破Title的数据,你应该使用PropertyName属性。

在布局背景中,添加绑定上下文。

 public partial class MainPage : ContentPage
    {
        public MainPage()
        {
            InitializeComponent();
            this.BindingContext = new MyViewModel();
        }
    }

这是我的MyViewModel.cs

    public class MyViewModel
    {
        public ObservableCollection<Team> Teams { get; set; }
        public MyViewModel()
        {
            Teams = new ObservableCollection<Team>();

            Teams.Add(new Team() {  Home = "lost1", Win = "31", Loose="1", Name="cava", Percentage="91" }) ;
            Teams.Add(new Team() {  Home = "lost2", Win = "31", Loose = "2", Name = "cava", Percentage = "91" });
            Teams.Add(new Team() { Home = "lost3", Win = "31", Loose = "3", Name = "cava", Percentage = "91" });
            Teams.Add(new Team() {  Home = "lost4", Win = "31", Loose = "4", Name = "cava", Percentage = "91 "});
            Teams.Add(new Team() {  Home = "lost5", Win = "31", Loose = "5", Name = "cava", Percentage = "91" });
            Teams.Add(new Team() {  Home = "lost6", Win = "31", Loose = "6", Name = "cava", Percentage = "91",  });
        }
    }

这是我的Team 代码。

  public class Team
    {

        public string Name { get; set; }
        public string Win { get; set; }
        public string Loose { get; set; }
        public string Home { get; set; }
        public string Percentage { get; set; }



    }

这是我的演示。

https://github.com/851265601/Xamarin.Android_ListviewSelect/blob/master/DataGridDemo1.zip

【讨论】:

  • 您好,非常感谢您的帮助!从您的帖子中,我对数据网格有了更好的了解! :) 效果很好
  • 但是对不起,你好。是否可以在行内创建条目?喜欢用户在任何列下的行中键入值吗?
  • 是的,您可以添加条目,请参考此线程。 imgur.com/a/pW5hcYZ
  • 好的,谢谢!如果我只想允许特定行的条目,可以吗?我可以问一下添加行的唯一方法是否只是使用带有绑定的属性名称?我想为条目添加另一个空行。我所做的是在没有任何属性的视图模型中添加新行,但不确定如何访问它以使用其中的条目
猜你喜欢
  • 2020-04-15
  • 2021-01-13
  • 1970-01-01
  • 1970-01-01
  • 2016-09-03
  • 2018-02-01
  • 2018-11-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多