LINQ to ListControl

/*
use master
go
if DB_ID('UserBase') is not null
   drop database UserBase
create database UserBase
go
use UserBase
go
create table UserTable
(
 UserID varchar(10) primary key,
 UserName nvarchar(20) not null
)
go
insert into UserTable values('U0001', '成龙')
insert into UserTable values('U0002', '李连杰')
insert into UserTable values('U0003', '甄子丹')
go
select * from UserTable
go
 */
using System;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.ServiceProcess;
using System.Windows.Forms;

namespace WinFormList
{
    public partial class FormList : Form
    {
        private ComboBox comboBox;
        private ListBox listBox;
        private ServiceController server;
        private SqlConnection sql;

        public FormList()
        {
            InitializeComponent();
            comboBox = new ComboBox();
            comboBox.Dock = DockStyle.Top;
            comboBox.DropDownStyle = ComboBoxStyle.DropDownList;
            comboBox.SelectedIndexChanged += new EventHandler(comboBox_SelectedIndexChanged);
            this.Controls.Add(comboBox);
            listBox = new ListBox();
            listBox.Dock = DockStyle.Bottom;
            listBox.SelectedIndexChanged += new EventHandler(listBox_SelectedIndexChanged);
            this.Controls.Add(listBox);
            this.StartPosition = FormStartPosition.CenterScreen;
        }

        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);
            server = new ServiceController("MSSQLSERVER"); // "MSSQL$SQLEXPRESS"
            switch (server.Status)
            {
                case ServiceControllerStatus.Stopped:   // 服务未运行。
                    server.Start();                    // net start mssqlserver
                    break;
                case ServiceControllerStatus.Paused: // 服务已暂停。
                    server.Continue();              // net continue mssqlserver
                    break;
            }
        Run:
            {
                System.Threading.Thread.Sleep(500);
                server.Refresh(); // 通过将属性重置为其当前值来刷新属性值。
            }
            if (server.Status != ServiceControllerStatus.Running)
                goto Run;
            SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder();
            builder.DataSource = Environment.MachineName;     // builder["Server"]
            builder.InitialCatalog = "UserBase";             // builder["Database"]
            builder.IntegratedSecurity = true;              // builder["Integrated Security"]
            builder.TypeSystemVersion = "SQL Server 2000"; // builder["Type System Version"]
            //builder.DataSource = string.Format(@"{0}/SQLEXPRESS", Environment.MachineName);
            //builder.InitialCatalog = "UserBase";
            //builder.IntegratedSecurity = true;
            //builder.UserInstance = true;
            //builder.TypeSystemVersion = "SQL Server 2005";
            sql = new SqlConnection(builder.ConnectionString);
            try
            {
                //SqlCommand cmd = new SqlCommand("select * from UserTable", sql);
                SqlCommand cmd = new SqlCommand("select UserID as ID, UserName as Name from UserTable order by ID asc", sql);
                cmd.CommandType = CommandType.Text;
                if (sql.State == ConnectionState.Closed)
                    sql.Open();
                using (SqlDataReader sdr = cmd.ExecuteReader(CommandBehavior.CloseConnection))
                {
                    //int id = sdr.GetOrdinal("UserID");
                    //int name = sdr.GetOrdinal("UserName");
                    //var query = from record in sdr.Cast<System.Data.Common.DbDataRecord>()
                    //            let ID = record.GetString(id) // let: 范围变量 record 只调用一次 GetString()。
                    //            let Name = record.GetString(name)
                    //            orderby ID ascending
                    //            select new { ID, Name };
                    //var list = query.ToList();
                    var list = sdr.Cast<System.Data.Common.DbDataRecord>().ToList();
                    comboBox.Sorted = true;
                    comboBox.ValueMember = "ID";
                    comboBox.DataSource = list.AsReadOnly();
                    comboBox.DisplayMember = "Name";
                    listBox.Sorted = true;
                    listBox.ValueMember = "Name";
                    listBox.DataSource = list.AsReadOnly();
                    listBox.DisplayMember = "ID";
                }
            }
            catch
            {
                if (sql.State == ConnectionState.Open)
                    sql.Close();
            }
        }

        private void comboBox_SelectedIndexChanged(object sender, EventArgs e)
        {
            listBox.Text = comboBox.SelectedValue as string;
        }

        private void listBox_SelectedIndexChanged(object sender, EventArgs e)
        {
            comboBox.Text = listBox.SelectedValue as string;
        }
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值