简体   繁体   中英

C# DataGridView stuck in button1_Click event?

I am trying to get the cell value in a string from the selected cell in the "Document Number" column in a DataGridView. My code to retrieve data from SharePoint and populate the DataGridView works fine, but I seem to be caught in a loop there? I cannot execute any other methods after populating the DataGridView . I can select a new search term and execute the Button1_Click event again successfully, but I cannot get any other methods to execute?

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 Microsoft.SharePoint.Client;
using SP = Microsoft.SharePoint.Client;

namespace BuyersForeverFriend
{
    public partial class Form1 : System.Windows.Forms.Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void textBox1_TextChanged(object sender, EventArgs e)
        {
            string userSearch = textBox1.Text;
            button1.Enabled = true;




        }

        private void button1_Click(object sender, EventArgs e)
        {

            using (ClientContext ctx = new ClientContext("https://teamsites.nafta.fcagroup.com/sites/PSOAPPS/iws/"))
            {
                var userInput = textBox1.Text;
                Web web = ctx.Web;
                List list = web.Lists.GetById(new Guid("61ef6657-eff7-42cb-99e1-8afd590334ec"));
                var q = new CamlQuery() { ViewXml = "<View><Query><Where><Contains><FieldRef Name='Item_x0020_Description' /><Value Type='Note'>" + userInput + "</Value></Contains></Where></Query><ViewFields><FieldRef Name='Title' /><FieldRef Name='Topic_x002d_' /><FieldRef Name='Item_x0020_Description' /></ViewFields><QueryOptions /></View>" };
                var r = list.GetItems(q);
                ctx.Load(r);
                ctx.ExecuteQuery();

                if (r.Count != 0)
                {
                    var searchResults = new DataTable();

                    searchResults.Columns.AddRange(new[]
                    {
                    new DataColumn("ID"), new DataColumn("Document Number"), new DataColumn("Item Description"), new DataColumn("Topic")});

                    foreach (var oListItem in r)
                    {
                        searchResults.Rows.Add(oListItem["ID"], oListItem["Title"], oListItem["Item_x0020_Description"],
                            oListItem["Topic_x002d_"]);
                    }

                    if (dataGridView1 != null)
                    {
                        dataGridView1.DataSource = searchResults;
                        dataGridView1.Refresh();
                        dataGridView1.Columns[2].DefaultCellStyle.Format = "dd'/'MM'/'yyyy";
                        var dataGridViewColumn = dataGridView1.Columns["ID"];
                        if (dataGridViewColumn != null)
                            dataGridViewColumn.Visible = false;
                    }
                    else 
                        MessageBox.Show("after else statement");
                }

                
            }
            MessageBox.Show("after sharepoint if statement");
            return;

        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }


        private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {

            MessageBox.Show("a cell was clicked");

        }

        
        private void dataGridView1_SelectionChanged(object sender, EventArgs e) 
        {

            MessageBox.Show("starting routine");
            if (dataGridView1.SelectedCells.Count > 0)
            {
                int selectedrowindex = dataGridView1.SelectedCells[0].RowIndex;
                DataGridViewRow selectedRow = dataGridView1.Rows[selectedrowindex];
                string a = Convert.ToString(selectedRow.Cells["Document Number"].Value);
                MessageBox.Show(a);
               
                textBox2.Text = ("The var =" + a);
                
            }
            else MessageBox.Show("if did not end up true");
        }


    }
}

I failed to initialize these, after adding them to the form method...poof everything works! :

        public Form1()
        {
            InitializeComponent();

            dataGridView1.CellClick += dataGridView1_CellClick;
            dataGridView1.SelectionChanged += dataGridView1_SelectionChanged;
        }

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM