信息-求C#大神关于窗体的问题

问题描述

求C#大神关于窗体的问题

我做一个图书管理系统,然后要从数据库中查询显示满足条件的书名,这个怎么做??
要求显示出来的书名可以直接点击然后查看它的详细信息(像作者啊,出版社什么的)

解决方案

从数据库中查询满足条件的书名,这个一般是数据库的模糊查询;
得到结果后,你可以将结果保存起来,然后填充到一个表格里,然后点击表格某项后,会触发一个点击事件,然后该事件会根据具体的书名去数据库查询该书的详细
信息,然后你获得详细信息,再用一个窗体显示就是了。
至于具体实现,应该很简单的,如果你耐心的话

解决方案二:

首先你用模糊查询把相对应得图书查出来放到listView或者dataGriwView中显示,可以把图书的ID放到隐藏列中,
之后为listView或者dataGriwView绑定点击事件,当点击某项时去获得隐藏列中的Id再去数据库里面查一遍,就可以了

解决方案三:

首先你用模糊查询把相对应得图书查出来放到listView或者dataGriwView中显示,可以把图书的ID放到隐藏列中,
之后为listView或者dataGriwView绑定点击事件,当点击某项时去获得隐藏列中的Id再去数据库里面查一遍,就可以了

解决方案四:

首先你用模糊查询把相对应得图书查出来放到listView或者dataGriwView中显示,可以把图书的ID放到隐藏列中,
之后为listView或者dataGriwView绑定点击事件,当点击某项时去获得隐藏列中的Id再去数据库里面查一遍,就可以了

解决方案五:

如上面一样,通过like关键字对书名进行匹配,然后分页返回结果:但不是只返回书名,而是返回整条记录。然后填充到一个表格。点击表格的某个行,通过选中行的DataRow转换为一个Book类型的对象,就可以随意操作了。

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;
using System.Reflection;

namespace MyWeibo.Windows
{
    public partial class ShowData : Form
    {
        public int pageSize { get; set; } //每页条数
        public int sumRecord { get; set; } //总条数
        public int start { get; set; } //开始
        public int end { get; set; } //结束
        public int page { get; set; } //当前页
        public int sumPage { get; set; } //总页数
        public string where { get; set; } //查询条件

        protected DataSet ds = new DataSet();
        protected Model.tb_status ts = new Model.tb_status();

        protected BLL.tb_status bllModel = new BLL.tb_status();

        public ShowData()
        {
            InitializeComponent();
            //禁止自动生成列
            dataGridView1.AutoGenerateColumns = false;
            sumRecord = bllModel.GetRecordCount(""); //获得总条数
            pageSize = 10;
            sumPage = (int)Math.Ceiling(sumRecord * 1.0 / (pageSize * 1.0));
            start = 1;
            end = 10;
            page = 1;
            where = "";
            bindDataGridView1(page);

        }

        /// <summary>
        /// 按钮:首页
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btn_first_Click(object sender, EventArgs e)
        {
            init();
            if (sumRecord==0)
            {
                MessageBox.Show("没有记录!");
                return;
            }
            page = 1;
            bindDataGridView1(page);
        }
        /// <summary>
        /// 按钮:上一页
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btn_prev_Click(object sender, EventArgs e)
        {
            init();
            if (page == 1)
            {
                MessageBox.Show("已经是首页!");
                return;
            }
            else
            {
                page--;
                bindDataGridView1(page);
            }
        }
        /// <summary>
        /// 按钮:下一页
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btn_next_Click(object sender, EventArgs e)
        {

            init();
            if (page ==sumPage)
            {
                MessageBox.Show("已经是末页!");
                return;
            }
            else
            {
                page++;

                bindDataGridView1(page);
            }
        }
        /// <summary>
        /// 按钮:末页
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btn_end_Click(object sender, EventArgs e)
        {
            init();
            if (sumRecord == 0)
            {
                MessageBox.Show("没有记录!");
                return;
            }
            page = sumPage;
            bindDataGridView1(page);
        }
        /// <summary>
        /// 按钮:跳转到指定页
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btn_go_Click(object sender, EventArgs e)
        {
            init();
            try
            {
                page = int.Parse(tbox_page.Text.Trim());
                if (page < 1)
                {
                    page = 1;
                }
                if (page > sumPage)
                {
                    page = sumPage;
                }
            }
            catch (System.Exception ex)
            {
                MessageBox.Show("请输入正确的页数!");
                return;
            }
            bindDataGridView1(page);
        }

        private void setLb_statusText()
        {
            lb_status.Text = "共有" + sumRecord + "条记录,每页" + pageSize + "条记录,当前第" + page + "/" + sumPage + " 页。";
        }

        /// <summary>
        /// 绑定第page页
        /// </summary>
        /// <param name="page">第page页</param>
        private void bindDataGridView1(int page)
        {
            start = (page - 1) * pageSize+ 1;
            end = page * pageSize;

            ds = bllModel.GetListByPage(where, "id", start, end);
            dataGridView1.DataSource = ds.Tables[0];
            setLb_statusText();
        }

        private void init()
        {
            sumRecord = bllModel.GetRecordCount(where); //刷新总条数
            sumPage = (int)Math.Ceiling(sumRecord * 1.0 / (pageSize * 1.0));
        }

        private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            //使用【微博ID】从DataSet中进行详细查询
            string id = dataGridView1.SelectedRows[0].Cells[3].Value.ToString();
            DataRow[] dr = ds.Tables[0].Select("id=" + id);
            ts = bllModel.DataRowToModel(dr[0]);
            PropertyInfo[] pArray=ts.GetType ().GetProperties ();

            string str = "";
            foreach(PropertyInfo p in pArray )
            {
                string name = p.Name;
                object value = p.GetValue(ts,null);
                str += string.Format("{0}:{1}n", name, value);
            }
            rtbox_tb_status.Text = str;
        }

        private void btn_add_Click(object sender, EventArgs e)
        {

        }

        private void btn_delete_Click(object sender, EventArgs e)
        {

        }

        private void btn_save_Click(object sender, EventArgs e)
        {

        }
        /// <summary>
        /// 按钮:关闭 窗体
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btn_exit_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void btn_select_Click(object sender, EventArgs e)
        {
            where = tbox_where.Text.Trim();
            init();
            page = 1;
            bindDataGridView1(page);
        }
    }
}

        /// <summary>
        /// 得到一个对象实体:把数据行转换为对象
        /// </summary>
        public Model.tb_status DataRowToModel(DataRow row)
                {
                 。。。
}
        /// <summary>
        /// 分页获取数据列表
        /// </summary>
        public DataSet GetListByPage(string strWhere, string orderby, int startIndex, int endIndex)
        {
            StringBuilder strSql = new StringBuilder();
            strSql.Append("SELECT * FROM ( ");
            strSql.Append(" SELECT ROW_NUMBER() OVER (");
            if (!string.IsNullOrEmpty(orderby.Trim()))
            {
                strSql.Append("order by T." + orderby);
            }
            else
            {
                strSql.Append("order by T.id desc");
            }
            strSql.Append(")AS Row, T.*  from tb_status T ");
            if (!string.IsNullOrEmpty(strWhere.Trim()))
            {
                strSql.Append(" WHERE " + strWhere);
            }
            strSql.Append(" ) TT");
            strSql.AppendFormat(" WHERE TT.Row between {0} and {1}", startIndex, endIndex);
            return DbHelperSQL.Query(strSql.ToString());
        }

解决方案六:

首先在窗体上拖相关控件如(textbox、button、datagridview)、后台接收前台查询条件拼接成SQL进行模糊查询,再将结果绑定到datagriview就好。。。

解决方案七:

首先在窗体上拖相关控件如(textbox、button、datagridview)、后台接收前台查询条件拼接成SQL进行模糊查询,再将结果绑定到datagriview就好。。。

时间: 2024-08-04 12:03:34

信息-求C#大神关于窗体的问题的相关文章

c#窗体应用程序-用C#的winform制作KTV点歌系统 求各路大神点拨

问题描述 用C#的winform制作KTV点歌系统 求各路大神点拨 怎么样改变窗体的外观,一直想制作扁平化的界面.怎么做呢? 解决方案 你对中窗体右击属性嘛,对应有窗体外观属性的 解决方案二: 这个得找专业UI公司做图片吧,然后修改控件的backgroundimage等属性才能实现

windows-在Windows下更改用户密码时,有什么方法可以获取到旧密码、新密码、确认密码吗?求各位大神指教

问题描述 在Windows下更改用户密码时,有什么方法可以获取到旧密码.新密码.确认密码吗?求各位大神指教 在Windows下更改用户密码时,有什么方法可以获取到旧密码.新密码.确认密码吗?求各位大神指教. 有什么DLL用来处理用户修改密码的事件吗? 有的话是不是可以hook这个DLL的函数来截获新密码? 解决方案 不知道你是准备做什么,用hook是可以截取键盘和鼠标的所有信息的,但是各种杀毒软件都会提醒用户键盘鼠标正被监听.hook函数慎重使用,不然你的电脑会经常死机的 解决方案二: 不是要截

求java大神解答一下这个问题!

问题描述 求java大神解答一下这个问题! 在java中setExtendedState( );//这一句是干什么用的?能否详细解释一下setExtendedState(MAXIMIZED_HORIZ); //这一句是什么意思,可以干什么? 解决方案 求大神帮解答javaEE这个问题,谢谢了 解决方案二: 设置窗口的状态参数含义NORMAL 默认状态ICONIFIED 最小化MAXIMIZED_HORIZ 水平方向最大化MAXIMIZED_VERT 垂直方向最大化MAXIMIZED_BOTH 水

特效-求android大神指点这个效果如何实现

问题描述 求android大神指点这个效果如何实现 最近在学习android开发,想实现一个类似于京东APP商品筛选功能(如截图所示):点击activityA上的一个按钮,从屏幕右侧向左滑出一个浮动的activityB,不完全遮盖activityA,在activityB上点击确定后可以更新activityA的数据.小弟初学乍道,求大神指点用什么来实现该功能最合理最容易! 解决方案 SlidingMenu 或者 PopuoWindow 可以实现 解决方案二: 可以考虑弹出式窗体.弹出窗口的两种实现

asp.net-跪求各位大神帮我看看哪错了吧

问题描述 跪求各位大神帮我看看哪错了吧 基于asp.net开发的,数据库是sql server2005.无法将信息添加到数据库中. 添加按钮click事件代码如下: protected void Button1_Click(object sender, EventArgs e) { string sql; sql = "insert into shipinxinxi(mingcheng,leibie,danjia) values('"+mingcheng.Text.ToString()

android-Android下面代码运行时候报错,仔细核对了控件名,没有问题,求各位大神帮忙看看

问题描述 Android下面代码运行时候报错,仔细核对了控件名,没有问题,求各位大神帮忙看看 button_user_alert.setOnClickListener(new OnClickListener() { View view = View.inflate(DialogComponentTest.this, R.layout.user_dialog, null); final EditText userName = (EditText) findViewById(R.id.edit_te

ios-类似qq阅读的app 技术难点 求问大神

问题描述 类似qq阅读的app 技术难点 求问大神 app端 的阅读 收藏 目录 文字放大 各种 后端图书存储格式 等等 好多疑问 请问大神们有没有相关资料,或者建议啥的? 目前后端打算使用springmvc 前端ios android 数据库mysql 解决方案 这不是几句话说的清楚的.前端的界面和后端编程根本就是南辕北辙的两个方向,前者需要大量琐碎的经验,不是看资料能看来的.后者更是需要深厚的算法和架构知识. 你看看腾讯的招聘信息就知道了.如果真的有神秘资料可以让一个新手又能胜任前端又能胜任

file-c语言在linux环境下进行文件复制的代码,使用时出错,求各位大神帮忙解答下

问题描述 c语言在linux环境下进行文件复制的代码,使用时出错,求各位大神帮忙解答下 #include#include#include#include#include#include#include#define BUFSIZE 4096#define COPYMODE 0644 void oops(char *char *);void *emalloc(size_t);void do_copy(char *char *);void copydir(char *char *);int isdi

紧急求助-ubutun Realtek b723 无线网卡驱动 问题,求各位大神帮帮小弟

问题描述 ubutun Realtek b723 无线网卡驱动 问题,求各位大神帮帮小弟 我在ubuntu安装了一个 电脑清扫工具,不小心把无线网卡驱动卸载掉了.我的无线网卡型号是:Realtek Device b723. 我用 lspci -vnn 命令得到如下信息: 05:00.0 Network controller [0280]: Realtek Semiconductor Co., Ltd. Device [10ec:b723] Subsystem: Lenovo Device [17