小操作

Posted cdjbolg

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了小操作相关的知识,希望对你有一定的参考价值。

如何将数据库添加进DataGridView?

将查询的数据用DataTable存储。

例如 DataTable dt;数据存在dt对象中

DataGirdView.DataSource=dt;

这样就把数据存在了DataGridView.

 技术图片

在Columns中 需要将Data一栏中的DataPropertyName与数据库中的列名相同完成绑定。

例如 显示班别,需要将名字改为Shift(即数据库中的列名).

显示的时候,没有按照Edit Columns中的顺序显示怎么做?

 DataGirdView.AutoGenerateColumns = false;

可以使顺序正常。

DataGridView不仅可以接受DataTable 也可以接收List 它接受的是一个对象.

增加序号。

技术图片
int coun = grdData.RowCount;
for (int i = 0; i < coun - 1; i++)
{
grdData.Rows[i].Cells["RowID"].Value = i + 1;//引号中为列名
}
View Code

 

 将DataTable中某列的数据修改成想要的

例如:在数据库中显示的是EMPTY 要显示为空类似的.

技术图片
 for (int j = 0; j < dt.Rows.Count; j++)
            {
                if (dt.Rows.Count > 0)
                {
                    if (dt.Rows[j]["Ref_Status"].ToString().Equals(""))
                    {
                        strRefStatus = "EMPTY";
                    }
                    else
                    {
                        strRefStatus = dt.Rows[j]["Ref_Status"].ToString();
                    }
                    if (strRefStatus != "FULL")
                    {
                        strStatus = "";
                        if (strRefStatus == "EMPTY")
                        {
                            strStatus = "备料";
                        }
                        if (strStatus == "PREPARE")
                        {
                            strStatus = "备料中";
                        }
                        if (strRefStatus == "WAIT")
                        {
                            strStatus = "等待";
                        }
                    }
                }
                grdData.Rows[j].Cells["Status"].Value = strStatus;
            }
View Code

DataTable会将整个数据表接收过来,可真正使用的数据未必是整个数据表所有的数据。

使用List可以接收需要使用的数据.

技术图片
public class Data_Model
    {
        public string Shift { get; set; }
        public string Line { get; set; }
        public string SO { get; set; }
        public string RefNo { get; set; }
        public string PartNo { get; set; }
        public string SoQty { get; set; }
        public string chgSoQty { get; set; }
        public string PlanStartTime { get; set; }
        public string WaitMin { get; set; }
        public string Remark { get; set; }
        public string StartTime{ get; set; }
      
    }
View Code
技术图片
 List<Data_Model> list = new List<Data_Model>();
            for (int m = 0; m < dt.Rows.Count; m++)
            {
                Data_Model model = new Data_Model();
                model.Shift = dt.Rows[m]["Shift"].ToString();
                model.Line = dt.Rows[m]["Line"].ToString();
                model.SO = dt.Rows[m]["So"].ToString();
                model.RefNo = dt.Rows[m]["RefNo"].ToString();
                model.SoQty = dt.Rows[m]["SoQty"].ToString();
                model.chgSoQty = dt.Rows[m]["chgSoQty"].ToString();
                model.StartTime = dt.Rows[m]["StartTime"].ToString();
                model.PlanStartTime = dt.Rows[m]["PlanStartTime"].ToString();
                model.WaitMin = dt.Rows[m]["WaitMin"].ToString();
                model.Remark = dt.Rows[m]["Remark"].ToString();
                list.Add(model);
            }
View Code

定义一个类用来作为接收数据的对象,并且类中含有需要接收的属性。将对象添加到List中。GridTable接受List.

通过List可以选择性的接收部分数据,此外List中的数据也会进行筛选,显示部分满足 条件的信息。

筛选List信息

技术图片
 if (cboLine.Text != "ALL" && cboSO.Text != "ALL" && cboStatus.Text == "ALL")
            {
                list = list.Where(a => a.Line.Contains(cboLine.Text) && a.SO.Contains(cboSO.Text)).ToList();
            }
View Code

筛选List使用的是Where方法,根据下拉框中的筛选包含条件,可多个也可单个。

List获取每行的某个值

例如获取每行的状态,将其改变。

技术图片
            int coun = grdData.RowCount;
            for (int i = 0; i < coun; i++)
            {
                grdData.Rows[i].Cells["RowID"].Value = i + 1;
            }
            for (int j = 0; j < coun; j++)
            {
                if (grdData.RowCount > 0)
                {
                    if (list[j].Status.ToString().Equals(""))
                    {
                        strRefStatus = "EMPTY";
                    }
                    else
                    {
                        strRefStatus = list[j].Status.ToString();
                    }
                    if (strRefStatus != "FULL")
                    {
                        strStatus = "";
                        if (strRefStatus == "EMPTY")
                        {
                            strStatus = "备料";
                        }
                        if (strStatus == "PREPARE")
                        {
                            strStatus = "备料中";
                        }
                        if (strRefStatus == "WAIT")
                        {
                            strStatus = "等待";
                        }
                    }
                }
                grdData.Rows[j].Cells["Status"].Value = strStatus;
            }
View Code

快速生成Get Set属性

prop 按两下Tab

选中一列的值

列如

string a;

string b;

选中string 加入ALT便可选中 方便修改。

将String日期转成DateTime再转成String->增加天数和格式转换

技术图片
string strSftDate=“20191016”;
DateTime date=DateTime.ParseExact(strSftDate,"yyyyMMdd",System.Globalization.CultureInfo.CurrentCulture);
strSftDate = date.AddDays(1).ToString("yyyyMMdd");
//完成天数增加并且返回sting 因为DateTime格式时分秒去不掉
View Code

 C# winform 定时器控件(看CSDN 作者una_ting的博客)

timer_MainForm.Enable = true;

timer_MainForm.Interval = 500;  //定时器时间间隔

timer_MainForm.Start();   //定时器开始工作

设置定时器属性

定时实现的行为可在Tick事件中实现。

技术图片
  private void timer_MainForm_Tick(object sender, EventArgs e)
 {

     //具体实现的方法

     //

}
View Code

 

根据10进制颜色代码赋值BackColor

首先将10进制数转成16进制数,后加上#和 添加0完成赋值。

six = int.Parse(strColorgrid);//强制转换int
varcolor = Convert.ToString(six, 16);//转换成16进制
count = varcolor.Length;
if (count < 6)
{
for (int j = 0; j < 6 - count; j++)
{
varcolor = varcolor + "0";
}
}

grdData.Rows[i].Cells[1].Style.BackColor = ColorTranslator.Fromhtml("#" + varcolor);

DataGridView 每行的颜色交替显示

//设置表格背景色
grdData.RowsDefaultCellStyle.BackColor = Color.White;
//设置交替行的背景色
grdData.AlternatingRowsDefaultCellStyle.BackColor = Color.Aqua;

技术图片

 

数据量庞大的时候使用双缓冲,可以加快滚动条拖动速度。

技术图片
  public void SetDataGridViewDB(System.Windows.Forms.DataGridView dataGridView)
        {
            Type dgvType = dataGridView.GetType();
            System.Reflection.PropertyInfo pi = dgvType.GetProperty("DoubleBuffered",
                System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic);
            pi.SetValue(dataGridView, true, null);
        }
View Code

 

子控件事件冲突,无法实现Mouse事件,最后只能采取坐标的方法。

DataGirdView中checkbox是否选中代码,Value不行选用EditedFormattedValue

if ((bool)grdData.Rows[i].Cells["Select"].EditedFormattedValue==false )
{

}

 

以上是关于小操作的主要内容,如果未能解决你的问题,请参考以下文章

微信小程序代码片段

Android课程---Android Studio使用小技巧:提取方法代码片段

微信小程序代码片段分享

小程序各种功能代码片段整理---持续更新

VS中添加自定义代码片段——偷懒小技巧

Android小部件,启动一个片段?