求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就好。。。