Представление сетки данных в выигрышной форме не изменяется в зависимости от содержимого - PullRequest
0 голосов
/ 29 февраля 2012

Я пытаюсь изменить размер таблицы данных в форме Windows. В моей форме есть два вида сетки данных, и оба они поступают из базы данных. Можно ли изменить размер представления сетки данных слева, чтобы оно увеличивалось с длиной и шириной содержимого, а представление сетки данных сокращалось с содержанием.

Ниже приведен мой код

private void show_Click(object sender, EventArgs e)
    {

        int rowIndex = Convert.ToInt32(productGridView.SelectedRows[0].Cells[2].Value);
        //IEnumerable<Supplier> supplierQuery = from supplier in newNorthWindContext.Suppliers
        //                                      where supplier.SupplierID == rowIndex
        //                                      select new {} supplier;
        IEnumerable<Supplier> supplierQuery = newNorthWindContext.Suppliers.Where(supliers => supliers.SupplierID == rowIndex);

        supplierDataGridView.DataSource = ((ObjectQuery)supplierQuery).Execute(MergeOption.AppendOnly);
        supplierDataGridView.Columns["SupplierID"].Visible = false;
        supplierDataGridView.Columns["ContactTitle"].Visible = false;
        supplierDataGridView.Columns["Address"].Visible = false;
        supplierDataGridView.Columns["City"].Visible = false;
        supplierDataGridView.Columns["Region"].Visible = false;
        supplierDataGridView.Columns["PostalCode"].Visible = false;
        supplierDataGridView.Columns["ContactTitle"].Visible = false;
        supplierDataGridView.Columns["Address"].Visible = false;

        //supplierDataGridView.AutoResizeColumns();
        supplierDataGridView.AutoSizeColumnsMode =
   DataGridViewAutoSizeColumnsMode.AllCells;

    }
    private void categoryDropDown_SelectedIndexChanged(object sender, EventArgs e)
    {
        Category category = (Category)this.categoryDropDown.SelectedItem;

        try
        {
            productGridView.DataSource = category.Products;
            productGridView.Columns["SupplierID"].Visible = false;
            productGridView.Columns["CategoryID"].Visible = false;
            productGridView.Columns["Category"].Visible = false;
            productGridView.Columns["Order_Details"].Visible = false;
            productGridView.Columns["Supplier"].Visible = false;
            productGridView.AllowUserToDeleteRows = true;
            productGridView.AutoResizeColumns();
            productGridView.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
        }

        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
    }



    private void ProductDetail_Load(object sender, EventArgs e)
    {

        newNorthWindContext = new NorthwindEntities();
        productGridView.AutoSizeColumnsMode =
    DataGridViewAutoSizeColumnsMode.AllCells;
        IEnumerable<Category> categoryQuery = from category in newNorthWindContext.Categories.Include("Products")
                                              orderby category.CategoryName
                                              select category;


        try
        {

            this.categoryDropDown.DataSource = ((ObjectQuery)categoryQuery).Execute(MergeOption.AppendOnly);
            this.categoryDropDown.DisplayMember = "categoryName";
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
    }

enter image description here

Ответы [ 2 ]

2 голосов
/ 26 августа 2012

Это решает проблему.

supplierDataGridView.Width = supplierDataGridView.Columns.GetColumnsWidth(DataGridViewElementStates.Visible)+4;
0 голосов
/ 29 февраля 2012

в конце show_Click у вас должно быть что-то вроде

supplierDataGridView.Width = supplierDataGridView.Columns.Sum(x => x.Width) + supplierDataGridView.RowHeadersWidth + 2;

supplierDataGridView.Height = supplierDataGridView.GetRowDisplayRectangle(supplierDataGridView.NewRowIndex, true).Bottom + supplierDataGridView.GetRowDisplayRectangle(supplierDataGridView.NewRowIndex, false).Height;

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...