android excel布局,Android实现仿excel数据表格效果

在没给大家分享代码之前,先给大家展示下效果图:

da14be1683e6c4cf78e57f23aa9cb7ac.png

1.activity

/**

* 采购需求

* Created by Administrator on 2016/10/13.

*/

public class PurchaseRequireActivity extends BaseActivity implements PurchaseRequireView {

@Bind(R.id.appTitle)

TextView appTitle;

@Bind(R.id.scrollLinearLayout)

LinearLayout titleLinearLayout;

@Bind(R.id.scroll_list)

ListView mListView;

@Bind(R.id.item_scroll_title)

CHTableScrollView headerScroll;

public HorizontalScrollView mTouchView;

private List mHScrollViews = new ArrayList<>();// 装入所有的 HScrollView

private HashMap mColumnControls = new HashMap<>();

private PPOrderRequirePresenter presenter;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

try {

setContentView(R.layout.activity_purchase_require);

ButterKnife.bind(this);

init();// 初始化

} catch (Exception e) {

e.printStackTrace();

}

}

/**

* 初始化

*/

private void init() {

presenter = new PPOrderRequirePresenter(this, this);

presenter.GetToday();

}

@OnClick({R.id.backRLot})

public void onClick(View view) {

switch (view.getId()) {

case R.id.backRLot:

finish();

break;

}

}

public void scrollTo_0_0() {// 全部列表滑动到开始位置

for (final CHTableScrollView hScrollView : mHScrollViews) {

mListView.post(new Runnable() {

@Override

public void run() {

//当listView刷新完成之后,把该条移动到最终位置

hScrollView.scrollTo(0, 0);

}

});

}

}

public void onScrollChanged(int l, int t) {

for (CHTableScrollView scrollView : mHScrollViews) {

if (mTouchView != scrollView)

scrollView.smoothScrollTo(l, t);//防止重复滑动

}

}

public void onClickText(String str, int position) {// 点击的事件

System.out.println(str + "-" + position);

}

@Override

public void refreshLV(List newList) {

list.clear();

list.addAll(newList);

}

@Override

public void initViews(String[] cols, List> datas) {

// 全部列表滑动到开始位置

scrollTo_0_0();

// 清空所有的view

titleLinearLayout.removeAllViews();

//Table Title

for (int i = 0; i < cols.length; i++) {

if (i != 0) {

View linearLay = presenter.newView(PurchaseRequireActivity.this, R.layout.row_title_edit_view, cols[i]);

TextView et = (TextView) linearLay.findViewById(R.id.tevEditView);

if (cols[i].contains("-")) {// setTextColor

if (cols[i].substring(cols[i].length() - 1, cols[i].length()).equals("2")) {// 2专柜:红色,1买断:黑色

et.setTextColor(Color.RED);

} else {

et.setTextColor(Color.DKGRAY);

}

} else {

et.setTextColor(Color.DKGRAY);

}

et.setText(cols[i].substring(0, cols[i].length() - 2));//设置每一列顶表格数据

titleLinearLayout.addView(linearLay);

}

}

// 添加头滑动事件,先清空列表

mHScrollViews.clear();

mHScrollViews.add(headerScroll);

mListView.setDividerHeight(0);//设置分割线高度

mColumnControls.clear();

for (int i = 0; i < cols.length; i++) {// 门店名称+现金 or 门店名称+外欠

if (i != 0) {//预留第一列

EditText etItem1 = new EditText(PurchaseRequireActivity.this);

etItem1.setWidth(50);// 设置宽度

etItem1.setTextColor(Color.DKGRAY);

etItem1.setGravity(Gravity.CENTER);

mColumnControls.put(cols[i], etItem1);

}

}

BaseAdapter adapter = new PurchaseRequireAdapter(this, datas, R.layout.row_item_edit, cols, mColumnControls, mHScrollViews, mListView);

mListView.setAdapter(adapter);

}

}

2.view

/**

* 采购需求

* Created by Administrator on 2016/10/13.

*/

public interface PurchaseRequireView {

void refreshLV(List newList);

void initViews(String[] cols, List> datas);

}

3.PPOrderRequirePresenter

/**

* 采购需求

* Created by Administrator on 2016/10/13.

*/

public class PPOrderRequirePresenter {

private PurchaseRequireView view;

private Context context;

public PPOrderRequirePresenter(Context context, PurchaseRequireView view) {

this.context = context;

this.view = view;

}

/**

* 获取数据

*/

public void GetToday() {

String billDate = getStartBillDate();//FreshRoadUtil.getTodayDate_normal().substring(0, 10);

int dimen = Integer.parseInt(getDimen());// 默认条件:日期=当天 、维度=按门店

String url = InterfaceNameUtil.PPOrderRequireGetRequire(billDate, dimen);

Log.e("url", url);

final SweetAlertDialog dialog = AppUtil.showLoading(context, "正在发送请求,请稍后...");

APIListTRequest request = new APIListTRequest<>(

url, null, PPOrderRequireMobModel.class, new Response.Listener>() {

@Override

public void onResponse(List list) {

if (list != null) {// && list.size() > 0

view.refreshLV(list);

doSomethingFroList(list);

view.refreshVerticalLV(getPNameFromDB(list));// 刷新一下导航条

}

dialog.dismiss();

}

}, new Response.ErrorListener() {

@Override

public void onErrorResponse(VolleyError error) {

AppUtil.toError(dialog, error);

}

});

request.setAddTokenToHeader(false);

VolleyUtil.start(context, request);

}

/**

* 生成用于显示excel的数据源

*

* @param newList newList

*/

public void doSomethingFroList(List newList) {

ArrayList nameList = new ArrayList<>();// 货物

ArrayList CargoIDList = new ArrayList<>();// 货物ID

ArrayList colsList = new ArrayList<>();// 门店名称-现金 or 门店名称-外欠

for (PPOrderRequireMobModel bean : newList) {

String cargoName = bean.getCargoName();

if (bean.getCargoName().length() > 6)

cargoName = cargoName.substring(0, 6);

nameList.add(cargoName + "\n存:" + FreshRoadUtil.doubleTrans(bean.getQtyInventory()) + ",需:" + FreshRoadUtil.doubleTrans(bean.getQtyRequire()));

CargoIDList.add(bean.getCargoID());

for (PPOrderRequireItemMobModel itemBean : bean.getItems()) {

if (!isHave(colsList, itemBean.getName(), itemBean.getNatureType())) {

colsList.add(itemBean.getName() + "-" + itemBean.getNatureType());

}

}

}

// 排序,先1.买断、再2.专柜

Collections.sort(colsList, new Comparator() {

@Override

public int compare(String left, String right) {

return (left.substring(left.length() - 1, left.length())).compareTo(right.substring(right.length() - 1, right.length()));

//return (right.substring(right.length() - 1, right.length())).compareTo(left.substring(left.length() - 1, left.length()));

}

});

colsList.add(0, "品名规格/店名");// excel控件的位于首位置的“提示”单元格文本

//Column

String[] cols = colsList.toArray(new String[colsList.size()]);

String[] name = nameList.toArray(new String[nameList.size()]);

List> datas = new ArrayList<>();

Map data;

for (int i = 0; i < name.length; i++) {

data = new HashMap<>();

data.put(cols[0], name[i]);//设置每一行头表格数据

for (int j = 1; j < cols.length; j++) {

data.put(cols[j], getShowText(newList, CargoIDList.get(i), colsList.get(j)));

}

datas.add(data);

}

view.initViews(cols, datas);

}

/**

* 列表中是否已经存在相应文本(外面 是 CargoID 是主键,里面是:Name+NatureType是唯一键)

*

* @param colsList colsList

* @param name name

* @param NatureType NatureType

* @return 是否

*/

public boolean isHave(ArrayList colsList, String name, int NatureType) {

for (String itemStr : colsList) {

if (itemStr.equals(name + "-" + NatureType)) {

return true;

}

}

return false;

}

/**

* 获取要显示的文本

*

* @param list list

* @param CargoID CargoID

* @param name name

* @return 显示的文本

*/

public String getShowText(List list, long CargoID, String name) {

for (PPOrderRequireMobModel bean : list) {

for (PPOrderRequireItemMobModel itemBean : bean.getItems()) {

if (bean.getCargoID() == CargoID && (itemBean.getName() + "-" + itemBean.getNatureType()).equals(name)) {

return FreshRoadUtil.doubleTrans(itemBean.getQtyRequire());

}

}

}

return " ";

}

/**

* 新增一个view

*

* @param context context

* @param res_id res_id

* @param tag_name tag_name

* @return view

*/

public View newView(Context context, int res_id, String tag_name) {

View itemView = LayoutInflater.from(context).inflate(res_id, null);

itemView.setTag(tag_name);

return itemView;

}

}

4.PurchaseRequireAdapter

/**

* 采购需求

* Created by Administrator on 2016/10/13.

*/

public class PurchaseRequireAdapter extends BaseAdapter {

private List extends Map> datas;

private int res;

private String[] from;

private Context context;

protected List mHScrollViews = new ArrayList<>();

private HashMap mColumnControls;

private ListView mListView;

public PurchaseRequireAdapter(Context context, List extends Map> data, int resource, String[] from,

HashMap mColumnControls, List mHScrollViews, ListView mListView) {

this.context = context;

this.datas = data;

this.res = resource;

this.from = from;

this.mColumnControls = mColumnControls;

this.mHScrollViews = mHScrollViews;

this.mListView = mListView;

}

@Override

public int getCount() {

return datas.size();

}

@Override

public Object getItem(int position) {

return datas.get(position);

}

@Override

public long getItemId(int position) {

return position;

}

@Override

public View getView(int position, View convertView, ViewGroup parent) {

View v = convertView;

if (v == null) {

v = LayoutInflater.from(context).inflate(res, null);

//第一次初始化的时候装进来

mColumnControls.put("title", (TextView) v.findViewById(R.id.item_title));

View chsv = v.findViewById(R.id.item_scroll);

LinearLayout ll = (LinearLayout) chsv.findViewById(R.id.item_scroll_layout);

View[] views = new View[from.length];

for (int i = 0; i < from.length; i++) {

if (i == 0) {

views[0] = v.findViewById(R.id.item_title);

continue;

}

View linearLay = newView(context, R.layout.row_item_edit_view, from[i]);

TextView td = (TextView) linearLay.findViewById(R.id.ievEditView);

td.setTag(position);

td.setOnClickListener(clickListener);// 文本的点击事件

ll.addView(linearLay);

views[i] = td;

}

v.setTag(views);

addHViews((CHTableScrollView) chsv);

}

View[] holders = (View[]) v.getTag();

int len = holders.length;

for (int i = 0; i < len; i++) {

if (i == 0) {

String oldStr = this.datas.get(position).get(from[i]).toString();// 西瓜\n存:12,需:32

String cargoStr = oldStr.substring(0, oldStr.indexOf("\n"));// 西瓜

String numberStr_1 = oldStr.substring(oldStr.indexOf(":") + 1, oldStr.indexOf(","));// 12

String numberStr_2 = oldStr.substring(oldStr.lastIndexOf(":") + 1, oldStr.length());// 32

String sText = "" + cargoStr + ""

+ "
"

+ "存: "

+ "" + numberStr_1 + " "

+ ",需: "

+ "" + numberStr_2 + " ";

((TextView) holders[i]).setText(Html.fromHtml(sText));

} else {

((TextView) holders[i]).setText(this.datas.get(position).get(from[i]).toString());

//((TextView) holders[i]).setTextColor(Color.parseColor("#FFA500"));

}

}

return v;

}

private View newView(Context context, int res_id, String tag_name) {

View itemView = LayoutInflater.from(context).inflate(res_id, null);

itemView.setTag(tag_name);

return itemView;

}

public void addHViews(final CHTableScrollView hScrollView) {

if (!mHScrollViews.isEmpty()) {

int size = mHScrollViews.size();

CHTableScrollView scrollView = mHScrollViews.get(size - 1);

final int scrollX = scrollView.getScrollX();

//第一次满屏后,向下滑动,有一条数据在开始时未加入

if (scrollX != 0) {

mListView.post(new Runnable() {

@Override

public void run() {

//当listView刷新完成之后,把该条移动到最终位置

hScrollView.scrollTo(scrollX, 0);

}

});

}

}

mHScrollViews.add(hScrollView);

}

// 点击的事件

private View.OnClickListener clickListener = new View.OnClickListener() {

@Override

public void onClick(View v) {

((PurchaseRequireActivity) context).onClickText(((TextView) v).getText().toString(), (int) v.getTag());

}

};

}

5.CHTableScrollView

/**

* excel 布局

* Created by Administrator on 2016/10/13.

*/

public class CHTableScrollView extends HorizontalScrollView {

PurchaseRequireActivity activity;

public CHTableScrollView(Context context, AttributeSet attrs, int defStyle) {

super(context, attrs, defStyle);

activity = (PurchaseRequireActivity) context;

}

public CHTableScrollView(Context context, AttributeSet attrs) {

super(context, attrs);

activity = (PurchaseRequireActivity) context;

}

public CHTableScrollView(Context context) {

super(context);

activity = (PurchaseRequireActivity) context;

}

@Override

public boolean onTouchEvent(MotionEvent ev) {

//进行触摸赋值

activity.mTouchView = this;

return super.onTouchEvent(ev);

}

@Override

protected void onScrollChanged(int l, int t, int oldl, int oldt) {

//当当前的CHScrollView被触摸时,滑动其它

if (activity.mTouchView == this) {

activity.onScrollChanged(l, t);

} else {

super.onScrollChanged(l, t, oldl, oldt);

}

}

}

6.activity_purchase_require

android:layout_width="match_parent"

android:layout_height="match_parent"

android:background="#FFFFFF"

android:orientation="vertical">

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:background="@color/bg_light_gray"

android:baselineAligned="false"

android:orientation="horizontal">

android:id="@+id/shop_mission_ll"

android:layout_width="0dp"

android:layout_height="wrap_content"

android:layout_weight="2">

android:id="@+id/shop_mission_delete_ll"

android:layout_width="50dp"

android:layout_height="35dp"

android:layout_alignParentRight="true">

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_centerInParent="true"

android:layout_marginRight="15dp"

android:contentDescription="@string/app_name"

android:src="@drawable/x_clear_icon" />

android:id="@+id/shop_mission_search_tv"

android:layout_width="match_parent"

android:layout_height="35dp"

android:layout_toLeftOf="@id/shop_mission_delete_ll"

android:gravity="center"

android:text="点击这里,设置查询条件"

android:textColor="@color/black_text"

android:textColorHint="@color/light_gray_text"

android:textSize="@dimen/font_small" />

android:layout_width="0dp"

android:layout_height="match_parent"

android:layout_weight="1">

android:id="@+id/purchase_select_tv"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_centerVertical="true"

android:singleLine="true"

android:text=""

android:textSize="12sp" />

android:id="@+id/purchase_tv_delete_ll"

android:layout_width="45dp"

android:layout_height="35dp"

android:layout_alignParentRight="true">

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_centerInParent="true"

android:layout_marginRight="15dp"

android:contentDescription="@string/app_name"

android:src="@drawable/x_clear_icon" />

android:layout_width="match_parent"

android:layout_height="match_parent">

android:id="@+id/order_vertical_lv"

android:layout_width="35dp"

android:layout_height="wrap_content"

android:layout_alignParentRight="true"

android:layout_centerVertical="true"

android:divider="@null"

android:scrollbars="none" />

android:layout_width="match_parent"

android:layout_height="match_parent"

android:layout_toLeftOf="@id/order_vertical_lv"

android:orientation="vertical">

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:gravity="fill_vertical"

android:minHeight="40dip"

android:orientation="horizontal">

android:layout_width="match_parent"

android:layout_height="match_parent"

android:layout_weight="3"

android:background="@drawable/bg_edittext_normal_s"

android:enabled="false"

android:gravity="center"

android:maxLines="1"

android:maxWidth="@dimen/scroll_tab_column_width"

android:minWidth="@dimen/scroll_tab_column_width"

android:singleLine="true"

android:text="品名规格/店名"

android:textColor="@android:color/black"

android:textSize="12sp" />

android:id="@+id/item_scroll_title"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:layout_weight="1"

android:scrollbars="none">

android:id="@+id/scrollLinearLayout"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="horizontal" />

android:id="@+id/scroll_list"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:cacheColorHint="@android:color/transparent"

android:scrollbars="none" />

android:id="@+id/shop_mission_item_hlv"

android:layout_width="60dp"

android:layout_height="40dp"

android:layout_centerHorizontal="true"

android:layout_marginTop="40dp"

android:background="@drawable/fresh_road_bg_button_normal"

android:visibility="gone" />

7.row_title_edit_view

android:layout_width="@dimen/scroll_tab_column_width"

android:layout_height="match_parent"

android:minHeight="50dip"

android:orientation="vertical">

android:id="@+id/tevEditView"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:layout_weight="1"

android:background="@drawable/bg_edittext_normal_title"

android:editable="false"

android:enabled="false"

android:gravity="center"

android:maxLines="2"

android:maxWidth="@dimen/scroll_tab_column_width"

android:minWidth="@dimen/scroll_tab_column_width"

android:paddingLeft="3dp"

android:paddingRight="3dp"

android:textColor="@android:color/black"

android:textSize="12sp" />

8.row_item_edit_view

[html] view plain copy 在CODE上查看代码片派生到我的代码片

android:layout_width="@dimen/scroll_tab_column_width"

android:layout_height="match_parent"

android:minHeight="50dip"

android:orientation="vertical">

android:id="@+id/ievEditView"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:layout_weight="1"

android:background="@drawable/bg_edittext"

android:gravity="center"

android:maxLines="2"

android:maxWidth="@dimen/scroll_tab_column_width"

android:minWidth="@dimen/scroll_tab_column_width"

android:textSize="12sp"

android:textColor="@android:color/black" />

9.row_item_edit

android:layout_width="match_parent"

android:layout_height="20dp"

android:maxHeight="20dp"

android:minHeight="20dp"

android:orientation="horizontal">

android:id="@+id/item_title"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:layout_weight="3"

android:background="@drawable/bg_edittext_normal_s"

android:enabled="false"

android:gravity="center"

android:maxLines="2"

android:maxWidth="@dimen/scroll_tab_column_width"

android:minWidth="@dimen/scroll_tab_column_width"

android:text="测试"

android:textColor="@android:color/black"

android:textSize="12sp" />

android:id="@+id/item_scroll"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:layout_weight="1"

android:scrollbars="none">

android:id="@+id/item_scroll_layout"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="horizontal" />

10.bg_edittext

11.bg_edittext_focused

[html] view plain copy 在CODE上查看代码片派生到我的代码片

android:width="0.1dp"

android:color="@color/nav_selected" />

12.bg_edittext_normal

android:width="0.1dp"

android:color="@color/nav_selected" />

13.bg_edittext_normal_title

android:width="0.1dp"

android:color="@color/nav_selected" />

14.PPOrderRequireMobModel

package com.co_insight.freshroad.business.bean;

import java.util.ArrayList;

import java.util.List;

/**

* 采购需求

* Created by Administrator on 2016/10/13.

*/

public class PPOrderRequireMobModel {

private long CargoID;// 货物ID

private String CargoName;// 货物名称

private long UnitID;// 单位ID

private String UnitName;// 单位

private long PNameID;// 小类

private long CategoryID;// 品名属性ID

private String CategoryName;// 品名属性

private double QtyRequire;// 需求量

private double QtyInventory;// 库存量

private long ID;

private String CreateDate;

private String UpdateDate;

private List Items = new ArrayList<>();// 需求明细

public long getCargoID() {

return CargoID;

}

public void setCargoID(long CargoID) {

this.CargoID = CargoID;

}

public String getCargoName() {

return CargoName;

}

public void setCargoName(String CargoName) {

this.CargoName = CargoName;

}

public long getUnitID() {

return UnitID;

}

public void setUnitID(long UnitID) {

this.UnitID = UnitID;

}

public String getUnitName() {

return UnitName;

}

public void setUnitName(String UnitName) {

this.UnitName = UnitName;

}

public long getPNameID() {

return PNameID;

}

public void setPNameID(long PNameID) {

this.PNameID = PNameID;

}

public long getCategoryID() {

return CategoryID;

}

public void setCategoryID(long CategoryID) {

this.CategoryID = CategoryID;

}

public String getCategoryName() {

return CategoryName;

}

public void setCategoryName(String CategoryName) {

this.CategoryName = CategoryName;

}

public double getQtyRequire() {

return QtyRequire;

}

public void setQtyRequire(double QtyRequire) {

this.QtyRequire = QtyRequire;

}

public double getQtyInventory() {

return QtyInventory;

}

public void setQtyInventory(double QtyInventory) {

this.QtyInventory = QtyInventory;

}

public long getID() {

return ID;

}

public void setID(long ID) {

this.ID = ID;

}

public String getCreateDate() {

return CreateDate;

}

public void setCreateDate(String CreateDate) {

this.CreateDate = CreateDate;

}

public String getUpdateDate() {

return UpdateDate;

}

public void setUpdateDate(String UpdateDate) {

this.UpdateDate = UpdateDate;

}

public List getItems() {

return Items;

}

public void setItems(List items) {

Items = items;

}

}

好了,代码到此结束。如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/563566.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

首款搭载鸿蒙os的设备,华为发布会配件汇总,首款搭载 鸿蒙OS 的设备来了

2020 年 10 月 30 日&#xff0c;华为召开 Mate40 系列发布会&#xff0c;正式发布 Mate40 系列手机。除了手机&#xff0c;本次发布会还发布了华为 Watch GT2 Pro 手表、华为 Sound 音箱等配件。以下是详细情况&#xff1a;华为智选智能摄像头 Pro该设备是首款搭载 HarmonyOS …

html图片自动切换的幻灯片效果的,js带点自动图片轮播幻灯片特效代码分享

本文实例讲述了javascript带点自动图片轮播幻灯片特效。分享给大家供大家参考。具体如下&#xff1a;这是一款基于javascript实现带点自动图片轮播幻灯片特效代码&#xff0c;实现过程很简单。运行效果图&#xff1a;-------------------查看效果下载源码-------------------小…

计算机网络硬件脆弱性,计算机网络的脆弱性有哪几点

计算机网络系统在设计、实施、应用和控制过程中存在的一切可能被攻击者利用从而造成安全危害的缺陷都是网络的脆弱性。佰佰安全网的专家顾问给出了这个问题的答案。计算机网络脆弱性(vulnerability)涉及一切信息系统或信息网络中可被非预期利用的方面。从整体上看&#xff0c;网…

全球计算机用户人数,NIC2019年11月:全球IPv6 用户数占比中国居43位

2019年11月&#xff0c;全球IPv4地址分配数量为29B&#xff0c;其中获得最多的是肯尼亚&#xff0c;8B&#xff1b;其次是美国&#xff0c;3B。除亚太、欧洲、拉美、北美等地区IPv4地址已耗尽外&#xff0c;非洲地区处于IPv4地址耗尽第一阶段。各地区IPv4地址消耗情况&#xff…

登录计算机怎么保存用户名,浏览器保存了账号密码怎么查看,教您怎么查看

有时候登录一个账号输入密码时&#xff0c;浏览器在征得同意后会自动储存并填写密码&#xff0c;但是这些密码都藏哪儿去了呢&#xff1f;当我们忘记了的时候又该如何才能查看呢&#xff1f;可能一些用户不知道该怎么去查看&#xff0c;今天教给大家查看这些已保存的密码的方法…

浅谈WPF之DataGrid过滤,分组,排序

使用过Excel的用户都知道&#xff0c;Excel可以方便的对数据进行分组&#xff0c;过滤&#xff0c;排序等操作&#xff0c;而在WPF中&#xff0c;默认提供的DataGrid只有很简单的功能&#xff0c;那么如何才能让我们开发的DataGrid&#xff0c;也像Excel一样具备丰富的客户端操…

计算机组成原理第六章难,计算机组成原理第六章答案

第6章 计算机的运算方法2. 已知X0.a1a2a3a4a5a6(ai为0或1)&#xff0c;讨论下列几种情况时ai各取何值。 (1)X (2)X (3)121 811X4161&#xff0c;只要a11&#xff0c;a2~a6不全为0即可。 2解&#xff1a; (1)若要X(2)若要X (3)若要1&#xff0c;只要a1~a3不全为0即可。 811 X &a…

职高学计算机走单招是,职高学生不用愁了,还有机会上本科,走“单招”或是最佳途径!...

原标题&#xff1a;职高学生不用愁了&#xff0c;还有机会上本科&#xff0c;走“单招”或是最佳途径&#xff01;职高学生不用愁了&#xff0c;也有机会上“本科”&#xff0c;走“单招”或是最佳途径随着教育制度的不断改革&#xff0c;中考也成为了人生的分水岭之一&#xf…

css3 filter url,CSS3 filter(滤镜) 属性

CSS3 filter(滤镜) 属性实例修改所有图片的颜色为黑白 (100% 灰度):img {-webkit-filter: grayscale(100%); /* Chrome, Safari, Opera */filter: grayscale(100%);}定义和使用filter 属性定义了元素(通常是)的可视效果(例如&#xff1a;模糊与饱和度)。默认值:none继承:no动画…

云联惠身份认证得多久_【转发扩散】你完成认证了吗?老来网APP也可以刷脸认证哦!...

为缓解民生山西认证压力&#xff0c;提高认证效率与认证率&#xff0c;山西省社保局推出“老来网”认证手机app&#xff0c;请未认证人员以及民生山西无法认证人员&#xff0c;采用此认证方式。附&#xff1a;民生山西APP认证流程老来网APP具体操作流程如下&#xff1a;一、 老…

区域显示触发_Nature Communications:地幔数据显示可氧化的火山气体的减少可能触发了大氧化事件...

Nature Communications&#xff1a;地幔数据显示可氧化的火山气体的减少可能触发了大氧化事件包括人类在内的需氧生物之所以能在地球上繁盛兴旺&#xff0c;主要得益于大气中大量O2的存在&#xff0c;但在地球整个历史的大部分时间内O2含量水平并不高。地质记录中的硫同位素非质…

华三ap设置无线服务器,H3C无线控制器典型配置案例集(V5)-6W113

本文档介绍AP自动注册配置举例。2 配置前提本文档不严格与具体软、硬件版本对应&#xff0c;如果使用过程中与产品实际情况有差异&#xff0c;请参考相关产品手册&#xff0c;或以设备实际情况为准。本文档假设您已了解自动AP功能。如图1所示&#xff0c;AC作为DHCP服务器为AP…

仪表盘怎么调 铃木uy125摩托车_平时市区骑行,摩托车链条多久保养一次?

链条因为前期成本低&#xff0c;后期维护容易&#xff0c;所以成为了现在的大多数摩托车的传动装置。但它也有自身的弊端&#xff0c;比如需要频繁的保养&#xff0c;如若不然就会有掉链和异响的可能&#xff0c;那么市区骑行的摩托车应该多久保养一次链条呢?我们还是先来看一…

过磅系统更换服务器,无人值守过磅系统改造方案

智能无人值守过磅系统改造方案以前,汽车运输的物料计量工作采用汽车衡仪表显示计量数据&#xff0c;司磅员手工填写单据、报表,这就造成了管理上的许多问题如:安全性差、操作繁琐、作弊、统计错误、数据不能共享等&#xff0c;给企业造成较大损失&#xff0c;不能满足生产经营的…

怎样把文件传到华为云服务器,如何把文件传到云服务器上

如何把文件传到云服务器上 内容精选换一换MongoDB官网提供了针对不同操作系统的客户端安装包&#xff0c;其二进制安装包下载页面链接为&#xff1a;https://www.mongodb.com/download-center#community。本章节以RedHat/CentOS 7.0和MongoDB 3.4.24为例&#xff0c;介绍如何获…

指数函数中x的取值范围_谨记!高考数学中容易出错的几个地方

高考生想要取得好的数学成绩必须要认真复习&#xff0c;在复习的时候大家要掌握一些内容&#xff0c;这样能使大家取得事半功倍的学习效果&#xff0c;下面小更为大家带来2019高考数学易犯的72个低级错误这篇内容&#xff0c;希望高考生能够认真阅读。1.集合中元素的特征认识不…

正在从“vetur”获取代码操作_长时间运行 io.Reader 和 io.Writer 操作测算进度和估算剩余时间...

每当我们在使用类似 io.Copy 和 ioutil.ReadAll 的工具时&#xff0c;比如我们正在从 http.Response 主体读入或者上传一个文件&#xff0c;我们会发现这些方法将一直堵塞&#xff0c;直到整个过程完成&#xff0c;哪怕耗时数十分钟甚至是小时——而且我们没有办法来查看进度&a…

挖掘城市ip_抖in杭州嘉年华,原来城市营销还能这么玩!

作者 | 汤木森来源 | TOP营销(ID&#xff1a;TOP_MKT)在《看不见的城市》中&#xff0c;卡尔维诺曾写下这样的语句&#xff1a;“每到一个新城市&#xff0c;旅行者就会发现一段自己未曾经历的过去。”重庆的穿楼轻轨、西安的摔碗酒、厦门的土耳其冰激凌……这些场景在抖音走红…

搭建微服务_快速搭建 SpringCloud 微服务开发环境的脚手架

本文作者&#xff1a;HelloGitHub-秦人本文适合有 SpringBoot 和 SpringCloud 基础知识的人群&#xff0c;跟着本文可使用和快速搭建 SpringCloud 项目。HelloGitHub 推出的《讲解开源项目》系列&#xff0c;今天给大家带来一款基于 SpringCloud2.1 的微服务开发脚手开源项目—…

getresourceasstream方法_【设计模式】第三篇:一篇搞定工厂模式【简单工厂、工厂方法模式、抽象工厂模式】...

文章系列目录(持续更新中):【设计模式】第一篇&#xff1a;概述、耦合、UML、七大原则&#xff0c;详细分析总结(基于Java)【设计模式】第二篇&#xff1a;单例模式的几种实现And反射对其的破坏一 为什么要用工厂模式之前讲解 Spring 的依赖注入的文章时&#xff0c;我们就已经…