使用Xamarin ...如何对网格内同一行或多行的两个单元格求和?

rnmwe5a2  于 2023-01-15  发布在  其他
关注(0)|答案(1)|浏览(144)

请帮助,因为我做了一个小项目与Xamarin
它是一个连接到SQL服务器数据库,然后填充数据表的数据,然后显示在网格中的数据。其中包含已被编程添加的条目,而不是在XAML中...这意味着条目没有名称或ID分配给他们中的每一个..即使这些目前它工作得很好...并且数据被正确调用,但正如您所知,在Grid中有行和列,我需要将同一行中的条目的内容相加或相乘,或者将一列或多列的内容相加
如何对网格中同一行或多行的两个单元格求和?网格是否与之匹配,还是必须选择另一种渲染
注意:::〉〉〉Maingrid是我的网格

////// define the number of rows according to the number of item you have
        for (int i = 0; i < dt.Rows.Count; i++)
        {
            MainGrid.RowDefinitions.Add(new RowDefinition { Height = new GridLength(1, GridUnitType.Star) });
        }

        //////// defining column number (in this case 3)
        for (int j = 0; j < dt.Columns.Count; j++)
        {
            MainGrid.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) });
        }

        ////////// adding the items to the grid (3 column , RN rows)

        for (int i = 0; i < dt.Rows.Count; i++)
        {
            

            for (int num = 0; num < dt.Columns.Count; num++)
            {
                
                

                    Entry entry = new Entry();
                    entry.Text = dt.Rows[i][num].ToString();
                    entry.TextColor = Color.Blue;
                    entry.BackgroundColor = Color.GhostWhite;
                    entry.HorizontalOptions = LayoutOptions.FillAndExpand;
                    entry.HorizontalTextAlignment = TextAlignment.Center;
                    entry.VerticalTextAlignment = TextAlignment.Center;
                    entry.Keyboard = Keyboard.Numeric;
                    entry.TextChanged += MyEntry_TextChanged;
                    entry.WidthRequest = 50;
                                            
                   
                    MainGrid.Children.Add(entry, num , i);
               

        }
1sbrub3j

1sbrub3j1#

你可以先得到两个单元格,然后得到两个单元格的和,并将其设置为另一个单元格的值。
您可以尝试以下代码:

public void GetSum()
        {
            var rowcount = MainGrid.RowDefinitions.Count;
            for( int i = 0; i < rowcount; i++ )
            {
               Entry A = (Entry)MainGrid.Children.Where(view => Grid.GetRow(view) == i && Grid.GetColumn(view) == 0 ).FirstOrDefault();
               Entry B = (Entry)MainGrid.Children.Where(view => Grid.GetRow(view) == i && Grid.GetColumn(view) == 1 ).FirstOrDefault();
               Entry C = (Entry)MainGrid.Children.Where(view => Grid.GetRow(view) == i && Grid.GetColumn(view) == 2 ).FirstOrDefault();
               C.Text = (int.Parse(A.Text) + int.Parse(B.Text)).ToString();
            }
        }

上面的代码可以使你的MainGrid像下图中的网格一样:

另外,点是MainGrid.Children.Where(view => Grid.GetRow(view) == i && Grid.GetColumn(view) == 0 ).FirstOrDefault()这条线,如果知道子视图的行索引和列索引,就可以用它来获取网格中的任何子视图。

相关问题