分享

Linq实现动态增删改查与分页

 Hermanli 2010-04-28
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace LinqToSql
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        DataClasses1DataContext da = new DataClasses1DataContext();
        private void Form1_Load(object sender, EventArgs e)
        {
            var query = from job in da.jobs
                        select job;
            dataGridView1.DataSource = query.Take(4);
        }

        int index=1;
        private void btnFirst_Click(object sender, EventArgs e)
        {
            //首页
            index = 1;
            var query = from job in da.jobs
                        select job;
            dataGridView1.DataSource = query.Take(4);
        }
        private void btnNext_Click(object sender, EventArgs e)
        {
            //下一页
            var query = from job in da.jobs
                        select job;
            int count = query.Count();//计算总记录数
            int n = count % 4 > 0 ? count / 4 + 1 : count / 4;//计算总页数
            if (index <n)
            {
                ++index;
                dataGridView1.DataSource = query.Skip(4 * (index - 1)).Take(4);
            }//若在总页数之内,返回下一页
        }
        private void btnPre_Click(object sender, EventArgs e)
        {
            //上一页
            var query = from job in da.jobs
                        select job;
            if (index == 1)
            {
                dataGridView1.DataSource = query.Take(4);//当当前为第一页时,仍返回当前页
            }
            else
            {
                --index;
                dataGridView1.DataSource = query.Skip(4 * (index - 1)).Take(4);//返回上一页
                //第二种方法
                //dataGridView1.DataSource = query.Skip(4 * (index - 2)).Take(4);
           
            }
           
        }
        private void btnLast_Click(object sender, EventArgs e)
        {
            //末页
            var query = from job in da.jobs
                        select job;
            int count= query.Count();//计算总记录数
            index = count % 4 > 0 ? count / 4 + 1 : count / 4;//设置最后一页的索引为当前索引
            dataGridView1.DataSource = query.Skip(4 * (index - 1)).Take(4);//显示最后一页
        }
        private void btnAdd_Click(object sender, EventArgs e)
        {
            //增加
            var query = from job1 in da.jobs
                        select job1;
            int count = query.Count();
            index = count % 4 > 0 ? count / 4 + 1 : count / 4;//设置最后一页为当前页的索引

            jobs job = new jobs { max_lvl=250, min_lvl=120, job_desc="微软高级工程师"};//新增记录
            da.jobs.InsertOnSubmit(job);
            da.SubmitChanges();//提交更改
            //刷新 方法一
            //var query1 = from job1 in da.jobs
            //             select job1;
            //int count = query1.Count();
            //if (count % 4 == 1)
            //{
            //    dataGridView1.DataSource = query1.Skip(4 * (index)).Take(4);
            //    index++;
            //}
            //else
            //{
            //    dataGridView1.DataSource = query1.Skip(4 * (index - 1)).Take(4);
            //}
            //刷新 方法二
            var query2 = from job1 in da.jobs
                         select job1;
            int count2 = query2.Count();
            index = count2 % 4 > 0 ? count2 / 4 + 1 : count2 / 4;
            dataGridView1.DataSource = query2.Skip(4 * (index - 1)).Take(4);
        }
        private void btnDel_Click(object sender, EventArgs e)
        {
            //删除
            var query = from job in da.jobs
                        orderby job.job_id descending
                        select job;
            //把最后一页设为当前页
            int count = query.Count();
            index = count % 4 > 0 ? count / 4 + 1 : count / 4;
            //删除最后一个元素
            jobs jobDel = query.First();//获取最后一个元素
            da.jobs.DeleteOnSubmit(jobDel);//实现删除
            da.SubmitChanges();//提交更改
            //刷新
            var query1 = from job in da.jobs
                        select job;
            int count2= query1.Count();
            if (count2 % 4 == 0)
            {
                dataGridView1.DataSource = query1.Skip(4 * (index - 2)).Take(4);//如果删除完当前页的元素,则返回到上一页
                index--;//设置当前索引
            }
            else
            {
                dataGridView1.DataSource = query1.Skip(4 * (index - 1)).Take(4);//当前页仍有元素时,仍停留在当前页
            }
        }
        private void btnUpdate_Click(object sender, EventArgs e)
        {
            var query = from job in da.jobs
                        orderby job.job_id descending
                        select job;
            jobs job1= query.First();
            job1.job_desc = "IBM高级工程师";
            da.SubmitChanges();
        }

       
    }
}

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多