第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 C# 中的 datagridview 中自動完成

在 C# 中的 datagridview 中自動完成

C#
天涯盡頭無女友 2022-06-12 16:25:03
我一直在到處尋找我的問題的答案。但是我還沒有找到滿意的答案。現(xiàn)在這是我的問題。我在 C# 中有一個未綁定到任何數(shù)據(jù)源的 datagridview。我想讓用戶在其中一列中輸入數(shù)據(jù)。我需要做的是通過自動完成來支持用戶。自動完成的數(shù)據(jù)來自數(shù)據(jù)庫。我可以很好地處理這個問題,但我的問題是建議應該取決于用戶輸入的字符。例如,如果用戶輸入“g”并且我的數(shù)據(jù)庫查詢返回“garlic”,則自動完成應該顯示它。這對于普通的文本框來說很容易。但是 datagridview 的問題是我無法讀取用戶在輸入時輸入的字符。編輯完成后會觸發(fā)單元格值更改事件。數(shù)據(jù)庫中的數(shù)據(jù)太多,無法一次添加到自動完成源中。所以我必須解決獲取用戶類型并據(jù)此生成源。有什么辦法可以完成這項任務嗎?請幫忙。以下是我最近使用但無濟于事的代碼之一,它不起作用: private void Form2_Load(object sender, EventArgs e)        {            string str = @"Data Source=MEDIXPC197;Initial Catalog=Inventory;Integrated Security=True";            SqlConnection con = new SqlConnection(str);            SqlDataAdapter da = new SqlDataAdapter("SELECT Product Code from tblmaster", con);            dt = new DataTable();            da.Fill(dt);            dataGridView1.DataSource = dt;} private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)        {            string text = dataGridView1.Columns[4].HeaderText;            if (text.Equals("Product Code")) ;            {                TextBox auto_text = e.Control as TextBox;                if (auto_text != null)                {                    auto_text.AutoCompleteMode = AutoCompleteMode.Suggest;                    auto_text.AutoCompleteSource = AutoCompleteSource.CustomSource;                    AutoCompleteStringCollection sc = new AutoCompleteStringCollection();                    add_items(sc);                    auto_text.AutoCompleteCustomSource = sc;                }            }        }        public void add_items(AutoCompleteStringCollection column)        {            column.Add("test1");
查看完整描述

1 回答

?
catspeake

TA貢獻1111條經(jīng)驗 獲得超0個贊

我已經(jīng)使用其他代碼(見下文)使它工作,現(xiàn)在我的問題是,如果我輸入的字母是數(shù)據(jù)庫中顯示的數(shù)據(jù)的第一個字母,我需要一些東西,當我輸入一些東西時,我需要一些東西,比如我輸入了1,提示會顯示“1,typo1,tester1tester,111”


using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

using System.Data.SqlClient;


namespace WindowsFormsApp4

{

    public partial class Form1 : Form

    {

        public Form1()

        {

            InitializeComponent();

        }


        private void Form1_Load(object sender, EventArgs e)

        {


            //Left = (MdiParent.ClientRectangle.Width - Width) / 2;

            //Top = (MdiParent.ClientRectangle.Height - Height) / 2;


            DataGridViewTextBoxColumn dgvslno = new DataGridViewTextBoxColumn();

            dgvslno.HeaderText = "Item Code";

            dgvslno.Width = 40;

            dataGridView1.Columns.Add(dgvslno);


            DataGridViewTextBoxColumn dgvpro = new DataGridViewTextBoxColumn();

            dgvpro.HeaderText = "Product Name";

            dgvpro.Width = 40;

            dataGridView1.Columns.Add(dgvpro);

        }


        public AutoCompleteStringCollection AutoCompleteLoad()

        {

            SqlConnection conn = new SqlConnection(@"Data Source=MEDIXPC197;Initial Catalog=Inventory;Integrated Security=True");

            SqlCommand cmd = new SqlCommand("Select ProductCode from tblmaster", conn);

            conn.Open();

            SqlDataReader dr = cmd.ExecuteReader();

            AutoCompleteStringCollection mycoll = new AutoCompleteStringCollection();

            while (dr.Read())

            {

                mycoll.Add(dr["ProductCode"].ToString());

            }

            return mycoll;

        }


        private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)

        {

            int column = dataGridView1.CurrentCell.ColumnIndex;

            string headerText = dataGridView1.Columns[column].HeaderText;


            if (headerText.Equals("Item Code"))

            {

                TextBox tb = e.Control as TextBox;


                if(tb != null)

                {

                    tb.AutoCompleteMode = AutoCompleteMode.SuggestAppend;

                    tb.AutoCompleteCustomSource = AutoCompleteLoad();

                    tb.AutoCompleteSource = AutoCompleteSource.CustomSource;

                }

            }

            else

            {

                TextBox tb = e.Control as TextBox;

                if (tb !=null)

                {

                    tb.AutoCompleteMode = AutoCompleteMode.None;

                }

            }

        }

    }

}



查看完整回答
反對 回復 2022-06-12
  • 1 回答
  • 0 關(guān)注
  • 204 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號