通用选择窗体

做一个程序下来,为了伺候好客户老爷子,基本上是把手输的都用选择代替。因此写一个通用的选择窗体很有必要。

如下,做了个简易的窗体。

里面代码如下,没什么难的。基本的注释也有。

    public partial class SelectForm : Form
    {
        public string ReturnStr = "", ColumnValue = "", sql = "";
        int ColumnIndex;
        DataTable dt = null;
        /// <summary>
        ///
        /// </summary>
        /// <param name="sql">sql语句</param>
        /// <param name="ColumnValue">返回值的列名</param>
        public SelectForm(string sql, string ColumnValue)
        {
            this.ColumnValue = ColumnValue;
            this.sql = sql;
            InitializeComponent();
        }
        /// <summary>
        /// 页面LOAD事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void SelectForm_Load(object sender, EventArgs e)
        {
            dataGrid.CellDoubleClick += dataGrid_CellDoubleClick;//单元格Cell双击事件
            DataBind();
        }
        /// <summary>
        /// 数据绑定
        /// </summary>
        private void DataBind()
        {
            dt = GetDataTable();//根据sql语句绑定数据库
            ColumnIndex = dt.Columns.IndexOf(ColumnValue);
            dataGrid.DataSource = dt;
        }
        /// <summary>
        /// 根据sql语句,返回datatable
        /// </summary>
        /// <returns></returns>
        private DataTable GetDataTable()
        {
            SqlConnectionStringBuilder sb = new SqlConnectionStringBuilder();
            sb.DataSource = "liurt-pc";
            sb.InitialCatalog = "mydb";
            sb.UserID = "sa";
            sb.Password = "qaz123";
            using (SqlConnection con = new SqlConnection(sb.ToString()))
            {
                SqlDataAdapter da = new SqlDataAdapter(sql, con);
                DataTable dt = new DataTable();
                da.Fill(dt);
                return dt;
            }
        }

        private void dataGrid_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            if (e.RowIndex > -1)
            {
                ReturnStr = dataGrid.Rows[e.RowIndex].Cells[ColumnIndex].Value.ToString();
                this.Close();
            }
        }

        private void txtValue_TextChanged(object sender, EventArgs e)
        {
            DataRow[] drs = dt.Select(ColumnValue + " like ‘%" + txtValue.Text + "%‘");
            if (drs.Length == 0)
            {
                dataGrid.DataSource = null;
            }
            else
            {
                dataGrid.DataSource = drs.CopyToDataTable();
            }
        }

        private void dataGrid_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
        {
            if (e.RowIndex % 2 != 0)
            { e.CellStyle.BackColor = Color.GreenYellow; }
            else
            { e.CellStyle.BackColor = Color.MintCream; }
        }

    }

基本思路就是这样。

时间: 2024-11-05 12:12:11

通用选择窗体的相关文章

C#中弹出文件选择窗体和判断是否下载提示窗体的源码

1.创建一个window窗体 2.点击起始路径的...按钮,选择源文件路径(包括文件名) 3.点击最终路径的...按钮,选择存放的路径 1)打开的选择文件窗体 2)最终的窗体的路径结果 4.点击下载文件后的效果 5.点击是时,执行下载文件方法,否取消下载 源码: 1.打开时选择文件窗体路径(包括文件名) 2.存放时选择文件窗体路径 3.文件是否下载的提示窗体 在正在下载下面写要执行的下载方法

通用附件管理功能改善

在物料清单功能中,常常需要借助于外部形象的解释来更深刻的了解物料清单.比如我们在介绍物料清单时,会用下面的图表来辅助说明: 这样一来就很容易理解.而这样的图片又和ERP中物料清单本身关联不多,于是这些形象的解释性功能被放进附件中. 在新发布的ERP系统中,有以下附件管理功能改善 1 增加DWG格式的附件浏览功能.可在线查看Auto CAD 格式的附件. 在一些行业,物料清单的来源为产品的装配科,对照着装配图解释物料清单,形象生动. 2 增加批量上传附件功能. 为提高用户的工作效率,可以通用选择一

CSS设计指南之上下文选择符

假定有如下场景:你想分别给article和aside中的段落文本,分别设置不同的字号.像这种"基于位置"变换标签样式的问题,可以用上下文选择符来解决. 1.普通的上下文选择符 格式:标签1 标签2 {声明} 标签2就是我们想要选择的目标,而且只有在标签1是其祖先元素(不一定是父元素)的情况下才会被选中. article p{color:Red;} 这个例子中的上下文选择符表明,只有是article后代的p元素才会应用后面的样式 2.子选择符 > 格式:标签1 > 标签2 {

C#创建不规则窗体的3种方式详解

现在,C#创建不规则窗体不是一件难事,下面总结一下: 一.自定义窗体 一般为规则的图形,如圆.椭圆等. 做法:重写Form1_Paint事件(Form1是窗体的名字),最简单的一种情况如下: System.Drawing.Drawing2D.GraphicsPath shape = new System.Drawing.Drawing2D.GraphicsPath(); shape.AddEllipse(0,0,this.Height, this.Width); this.Region = ne

Extjs DateTime 日期时间选择控件 (非点击日期强制选择) 支持4.0以上

Extjs的日期控件,仅仅能支持到日期选择,对时间的选择并不完好.而网上下载的控件,都是基于Ext.form.dateField 开发.在选中日期后自己主动选择,并隐藏此选择窗体. 在经过一番改造后,最终做好了一个带确认button的时间选择控件.截图例如以下 详细代码在附件里.  要想正常使用,还须要加一段css样式: .x-datepicker-sel { border-color: rgb(224, 162, 162); border-style: solid; border-width:

特殊的上下文选择符

通过增删选择符熟练各个选择符的用法:(注:笔者FF浏览器在源码上注释一部分内容后并不能改变运行后的输出结果,必须删除要注释的内容才行) <!DOCTYPE html><html>    <head>    <style type="text/css">    section>h1 {font-style:italic;}    h1+p {font-variant:small-caps;}    h1~a {color:purple

使用 TableLayoutPanel 控件设置窗体布局

使用 TableLayoutPanel 控件设置窗体布局 在 Visual Studio IDE 左侧,找到"工具箱"选项卡. 选择"工具箱"选项卡,随即将显示工具箱.(或者,在菜单栏上,依次选择"视图"."工具箱".) 选择"容器"组旁边的小三角形符号以打开该组,如下图所示. "容器"组 可以向窗体中添加类似按钮.复选框和标签这样的控件. 在工具箱中双击 TableLayoutPane

PB数据窗体其它知识

//////////////////////////////// 标识当前行 〓标识当前行也就是给当前行加上醒目的标记.以便用户更清楚当前要对哪一行数据进行操作,尤其当用户的操作中间有停顿时,继续进行操作就特别须要知道哪个是当前行.这里的当前行不要狭隘地理解成仅仅是光标所在行.当翻页时假设光标所在行不在当前页中.这时应该将当前页中的第一行置为当前行,否则easy造成错觉:当删除数据时.不能自己主动改变当前行,此时应该使用脚本设置当前行. 标识当前行的函数和方法非常多,比較经常使用的有Select

Mac &amp; XCode 使用技巧总结

Mac OS 是基于UNIX 的操作系统. 一 基本技巧 1. 允许安装任何来源的APP 系统偏好设置 -> 安全性和隐私 -> 通用 选择”允许从以下位置下载的应用程序“ 中的 “任何来源”. 2.使用虚拟机安装Mac后,分辨率自适应屏幕 如果宿主的屏幕分辨率为"1920 * 1080" .虚拟机设置--> 显示器-->选中指定监视器设置,任意监视器的最大分辨率为 "1920 * 1080". 3. 重新格式化磁盘 Finder下, 显示-