如何自定义添加数据列表(数据单元格)

在我们的项目中有时需要我们自己来添加数据单元格,而不是使用DataGrid或者是ListView等控件来填充数据,在我们下面的这个例子当中,我们只使用Grid和Label控件来实现类似DataGrid这种形式的单元格,下面我们通过一个例子来说明,这里只是贴出重点的代码形式。

<Grid Grid.Row="2">
     <Grid.RowDefinitions>
       <RowDefinition Height="15*"></RowDefinition>
       <RowDefinition Height="100*"></RowDefinition>
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
       <ColumnDefinition Width="60*"></ColumnDefinition>
       <ColumnDefinition Width="1*"></ColumnDefinition>
       <ColumnDefinition Width="40*"></ColumnDefinition>
       <ColumnDefinition Width="1*"></ColumnDefinition>
       <ColumnDefinition Width="40*"></ColumnDefinition>
       <ColumnDefinition Width="1*"></ColumnDefinition>
       <ColumnDefinition Width="60*"></ColumnDefinition>
   </Grid.ColumnDefinitions>
   <Label Grid.Column="0" Grid.Row="0" Foreground="White" VerticalAlignment="Center" HorizontalAlignment="Center" FontSize="14">治超站名称</Label>
   <Label Grid.Column="2" Grid.Row="0" Foreground="White" VerticalAlignment="Center" HorizontalAlignment="Center" FontSize="14">车牌号</Label>
   <Label Grid.Column="4" Grid.Row="0" Foreground="White" VerticalAlignment="Center" HorizontalAlignment="Center" FontSize="14">超限率</Label>
   <Label Grid.Column="6" Grid.Row="0" Foreground="White" VerticalAlignment="Center" HorizontalAlignment="Center" FontSize="14">违法时间</Label>

<Grid Name="gData" Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="7" Background="#657C9A" >
        <Grid.RowDefinitions>
            <RowDefinition Height="1*"></RowDefinition>
            <RowDefinition Height="1*"></RowDefinition>
            <RowDefinition Height="1*"></RowDefinition>
            <RowDefinition Height="1*"></RowDefinition>
            <RowDefinition Height="1*"></RowDefinition>
            <RowDefinition Height="1*"></RowDefinition>
            <RowDefinition Height="1*"></RowDefinition>
            <RowDefinition Height="1*"></RowDefinition>
            <RowDefinition Height="1*"></RowDefinition>
            <RowDefinition Height="1*"></RowDefinition>
       </Grid.RowDefinitions>

</Grid>

<Rectangle Grid.Column="1" Grid.RowSpan="2" Fill="#829CBE"/>

<Rectangle Grid.Column="3" Grid.RowSpan="2" Fill="#829CBE"/>

<Rectangle Grid.Column="5" Grid.RowSpan="2" Fill="#829CBE"/>
</Grid>
</Grid>

  在我们定义的另外一个类中,我们会将数据添加到gData这个Grid中,这里我们先贴出子类的前台代码:

<Grid x:Class="TrafficOverweight.ScreenViews.TrafficOverWeightListRow"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006">
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="60*"></ColumnDefinition>
        <ColumnDefinition Width="1*"></ColumnDefinition>
        <ColumnDefinition Width="40*"></ColumnDefinition>
        <ColumnDefinition Width="1*"></ColumnDefinition>
        <ColumnDefinition Width="40*"></ColumnDefinition>
        <ColumnDefinition Width="1*"></ColumnDefinition>
        <ColumnDefinition Width="60*"></ColumnDefinition>
    </Grid.ColumnDefinitions>
    <Label Name="lbl1" Grid.Column="0" Foreground="White" VerticalAlignment="Center" HorizontalAlignment="Center" FontSize="40"/>
    <Label Name="lbl2" Grid.Column="2" Foreground="White" VerticalAlignment="Center" HorizontalAlignment="Center" FontSize="40"/>
    <Label Name="lbl3" Grid.Column="4" Foreground="White" VerticalAlignment="Center" HorizontalAlignment="Center" FontSize="40"/>
    <Label Name="lbl4" Grid.Column="6" Foreground="White" VerticalAlignment="Center" HorizontalAlignment="Center" FontSize="40"/>
</Grid>

  子类的后台代码如下:     

using System.Windows.Controls;
using System.Windows.Media;

namespace TrafficOverweight.ScreenViews
{
    /// <summary>
    /// TrafficOverWeightListRow.xaml 的交互逻辑
    /// </summary>
    public partial class TrafficOverWeightListRow : Grid
    {
        public TrafficOverWeightListRow(int pRow, string strStationName, string strLicensePlateNumber, double OverWeightRate, string strIllegalTime)
        {
            InitializeComponent();

            this.SetValue(Grid.RowProperty, pRow);
            lbl1.Content = strStationName;
            lbl2.Content = strLicensePlateNumber;
            lbl3.Content = OverWeightRate + "%";
            lbl4.Content = strIllegalTime;
            if (pRow % 2 == 0) { this.Background = new SolidColorBrush(Color.FromRgb(101, 124, 154)); }
            else { this.Background = new SolidColorBrush(Color.FromRgb(127, 150, 182)); }
            if (OverWeightRate >= 80) { this.Background = new SolidColorBrush(Color.FromRgb(153, 46, 46)); }
        }
    }
}

添加的时候通过下面的形式进行添加:

/// <summary>
        /// 显示结果
        /// </summary>
        void ShowResult()
        {
            lblCount.Content = currentPage + "/" + maxPage;

            btnFirst.Tag = "1";
            btnFirst.Background = Brushes.Green;
            btnPre.Tag = "1";
            btnPre.Background = Brushes.Green;
            btnNext.Tag = "1";
            btnNext.Background = Brushes.Green;
            btnLast.Tag = "1";
            btnLast.Background = Brushes.Green;

            if (currentPage == 1)
            {
                btnFirst.Tag = "0";
                btnFirst.Background = Brushes.Gray;
                btnPre.Tag = "0";
                btnPre.Background = Brushes.Gray;
            }
            if (currentPage == maxPage)
            {
                btnNext.Tag = "0";
                btnNext.Background = Brushes.Gray;
                btnLast.Tag = "0";
                btnLast.Background = Brushes.Gray;
            }

            int numEnd = 0;
            if (currentPage == maxPage)
            {
                numEnd = dtQueryResult.Rows.Count;
            }
            else
            {
                numEnd = currentPage * pageRowsCount;
            }

            gData.Children.Clear();
            for (int i = (currentPage - 1) * pageRowsCount; i < numEnd; i++)
            {
                TrafficOverWeightQueryRow tRow = new TrafficOverWeightQueryRow(i, dtQueryResult.Rows[i]["StationName"].ToString(), dtQueryResult.Rows[i]["LicensePlateNumber"].ToString(), Convert.ToDouble(dtQueryResult.Rows[i]["OverRate"]), dtQueryResult.Rows[i]["IllegalTime"].ToString(), this);
                gData.Children.Add(tRow);
            }
        }

  这里代码的形式不是十分重要,重要的是这种通过类的封装来完成数据的加载,这种方法比较值得我们去学习。

时间: 2024-08-24 10:14:13

如何自定义添加数据列表(数据单元格)的相关文章

不能删除电子数据表的单元格

使用OleDB方式操作Excel,删除Excel中的表时提示该错误.非常是奇怪(只是也是见怪不怪了,微软的东西就喜欢给出一些莫名其妙的错误提示),昨天还能删除的,今天就删除不了了(只是昨天到今天确实有个大动作.把系统Ghost到了SSD固态硬盘上了,但操作的Excel文件路径并没有改变). 具体错误信息: {System.Data.OleDb.OleDbException (0x80004005): 不能删除电子数据表的单元格. 在 System.Data.OleDb.OleDbCommand.

Excel催化剂开源第15波-VSTO开发之DataTable数据导出至单元格区域

上篇提到如何从Excel界面上拿到用户的数据,另外反方向的怎样输出给用户数据,也是关键之处. VSTO最大的优势是,这双向的过程中,全程有用户的交互操作. 而一般IT型的程序,都是脱离用户的操作,只能让用户准备好数据,离开Excel,或生成数据,要重新打开某文件才能获取到数据结果. 在VSTO中,用户随时在Excel最强UI前端中生产数据,同时也在获得数据结果后,无缝地利用Excel强大的数据处理能力进行数据的再次加工如Vlookup一些其他信息进来,做个图表展示等等. VSTO程序在用户全程数

JS遍历表格获取每行数据及每个单元格数据

/** * 遍历表格获取每行数据及每个单元格数据 * @param tableID 表格ID */ function GetTable(tableID) { var milasUrl = {};//新建对象,用来存储所有数据 var subMilasUrlArr = {};//存储每一行数据 var tableData = {}; $("#" + tableID + " tbody tr").each(function (trindex, tritem) {//遍历

Swift - 动态添加删除TableView的单元格(以及内部元件)

在Swift开发中,我们有时需要动态的添加或删除列表的单元格. 比如我们做一个消息提醒页面,默认页面只显示两个单元格.当点击第二个单元格(时间标签)时,下面会再添加一个单元格放置日期选择控件(同时新增单元格的高度也会变化).而再次点击第二个单元格,日期选择控件又会隐藏.     1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40

使用vue自定义指令合并iview表格单元格

使用vue自定义指令合并iview表格单元格, 我们在开发过程中发现iview表格组件,官网只提供了合并表头的demo,并没有合并表格中的单元格. ivew表头分组:https://www.iviewui.com/components/table#BTFZ 效果图如下: 具体实现思路,通过vue自定义属性来操作dom,达到我们想要的效果: 代码如下: demo.vue  表格页面 <template> <div class="demo"><Table :c

Excel用底纹突出单元格的数据给Excel单元格添加底纹效果

在表格中某些单元格的数据相对重要,需要突出显示,除了应用单元格样式外,还可以单独为单元格设置图案底纹,让其突出显示.(常见问题)excel中如何设置单元格的底纹怎样给EXCEL表格加底纹在EXCEL中对某个单元格设置25%灰色底纹怎么做Excel利用条件格式对包含公式的单元格突出显示如何更换Excel单元格中的底纹颜色 [解决方法,教程视频资料如下]资料来源:http://edu.51cto.com/course/15224.html 完整博客资料:http://blog.51cto.com/1

导出数据 超出的单元格样式的最大数量。您可以定义多达4000风格

The maximum number of cell styles was exceeded. You can define up to 4000 styles POI操作Excel中,导出的数据不是很大时,则不会有问题,而数据很多或者比较多时, 就会报以下的错误,是由于cell styles太多create造成,故一般可以把cellstyle设置放到循环外面 报错如下: Caused by: java.lang.IllegalStateException: The maximum number

创建数据透视表数据包含合并单元格

我们都知道,含合并单元格格当数据创建数据透视表,结果会出来空,我们不能满足我们的要求,关键的问题是,合并的单元格的值它是空的值,然后,现在的问题是,如何将这些结合单位格作为有值它合并,那,尽管被合并,但值还在,仅仅是不显示出来而已,这样创建出的数据透视表就能得到正确的结果了. 上图: 操作: 0.原始含合并单格格的值为"原始"部分: 1.将0的部分使用格式刷刷至①处保留: 2.将"原始"部分取消合并单元格,并填充为正常的值. ※ 假设数据量较大,能够參考这种方法进行

EasyUI Datagrid 自定义列、Foolter及单元格编辑

1:自定义列,包括 Group var head1Array = []; head1Array.push({ field: 'Id', title: 'xxxx', rowspan: 2 }); head1Array.push({ title: 'yyyy', colspan: 4 }); var head2Array = []; //.each(units,function(i,unit)//colArray.push(field:′Id′,title:unit.Name);//);head2