подскажите плз как управлять внешним видом DataGridView

YuriyB
Дата: 11.05.2006 13:30:04
я не использую никаких мастеров VS

т е всё присвоения происходят программно

и хотел бы изменит ширину столбцов
и названия заголовков
YuriyB
Дата: 11.05.2006 13:33:16
 void init_dataset() 
        {
            string strAccessSelect = "SELECT index,bezeichnung,artikelnr,typ FROM katalog order by index";
            OleDbConnection cnn = new OleDbConnection(strCnn);
            OleDbCommand myCommand = new OleDbCommand(strAccessSelect, cnn);
            OleDbDataAdapter myDataAdapter = new OleDbDataAdapter(myCommand);
            cnn.Open();
            myDataSet = new DataSet();
            try
            {
                myDataAdapter.Fill(myDataSet, "katalog");
                myDataTable = myDataSet.Tables["katalog"];
                myDataView = myDataSet.DefaultViewManager.CreateDataView(myDataTable);
                myDataView.RowFilter = "typ = 0";
                dataGridView1.DataSource = myDataView; 

                
            }
            	
		    catch 
		    {
				    MessageBox.Show(" Error!!!","Suchergebniss");
		    }
		    finally
		    {
			        cnn.Close();
			}
        
        }







и еще я хотел бы что отобразалось только первых 3 столбца
если у кого есть желания был бы рад услышать замечание также
по коду
Sv219
Дата: 12.05.2006 08:43:18
внешний вид: смотри DataGridTableStyles (и ширина и названия заголовков и скрытие колонок и много еще чего)

вообще метод init_dataset() можно разбить на несколько более мелких (как минимум создать отдельный класс для работы с БД)... будет удобнее так как например щас ты используешь фильтрацию
myDataView.RowFilter = "typ = 0";
а через месяц добавиться еще какая-нибудь... сделай метод SetRowFilter(string filter) или как атрибут RowFilter....

Для поиска примера класса или библиотеки для работы с БД воспользуйся поисковиком точно чтонибудь найдешь и можешь взять за основу... на gotdotnet.ru точно что то было
YuriyB
Дата: 12.05.2006 21:29:08
поробовал так
this.components = new System.ComponentModel.Container();
            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1));
            this.dataGridView1 = new System.Windows.Forms.DataGridView();
            this.idDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
            this.indexDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
            this.bezeichnungDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
            this.artikelnrDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
            this.typDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();


но выскакивает ошибка ...

DataGridTableStyles а разве это относится к DataGridView ?
YuriyB
Дата: 12.05.2006 21:42:08
и так тоже не получается ....


private void SetUpDataGridView()
{
    this.Controls.Add(dataGridView1);
    dataGridView1.ColumnCount = 5;
    DataGridViewCellStyle style = 
        dataGridView1.ColumnHeadersDefaultCellStyle;
    style.BackColor = Color.Navy;
    style.ForeColor = Color.White;
    style.Font = new Font(dataGridView1.Font, FontStyle.Bold);

    dataGridView1.EditMode = DataGridViewEditMode.EditOnEnter;
    dataGridView1.Name = "dataGridView1";
    dataGridView1.Location = new Point(8, 8);
    dataGridView1.Size = new Size(500, 300);
    dataGridView1.AutoSizeRowsMode = 
        DataGridViewAutoSizeRowsMode.DisplayedCellsExceptHeaders;
    dataGridView1.ColumnHeadersBorderStyle = 
        DataGridViewHeaderBorderStyle.Raised;
    dataGridView1.CellBorderStyle = DataGridViewCellBorderStyle.Single;
    dataGridView1.GridColor = SystemColors.ActiveBorder;
    dataGridView1.RowHeadersVisible = false;

    dataGridView1.Columns[0].Name = "Release Date";
    dataGridView1.Columns[1].Name = "Track";
    dataGridView1.Columns[1].DefaultCellStyle.Alignment = 
        DataGridViewContentAlignment.MiddleCenter;
    dataGridView1.Columns[2].Name = "Title";
    dataGridView1.Columns[3].Name = "Artist";
    dataGridView1.Columns[4].Name = "Album";

    // Make the font italic for row four.
    dataGridView1.Columns[4].DefaultCellStyle.Font = new Font(DataGridView.DefaultFont, FontStyle.Italic);

    dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
    dataGridView1.MultiSelect = false;

    dataGridView1.BackgroundColor = Color.Honeydew;

    dataGridView1.Dock = DockStyle.Fill;

    dataGridView1.CellFormatting += new DataGridViewCellFormattingEventHandler(dataGridView1_CellFormatting);
    dataGridView1.CellParsing += new DataGridViewCellParsingEventHandler(dataGridView1_CellParsing);
    addNewRowButton.Click += new EventHandler(addNewRowButton_Click);
    deleteRowButton.Click += new EventHandler(deleteRowButton_Click);
    ledgerStyleButton.Click += new EventHandler(ledgerStyleButton_Click);
    dataGridView1.CellValidating += new DataGridViewCellValidatingEventHandler(dataGridView1_CellValidating);

}
YuriyB
Дата: 13.05.2006 00:23:31
мне кажется нужно

myDataView = myDataSet.DefaultViewManager.CreateDataView(myDataTable);

изменять DataView
YuriyB
Дата: 13.05.2006 02:01:23
нашел одно решение но очень хлипокое

может кто подскажет как улучшить

 void init_dataset()
        {
            string strAccessSelect = "SELECT index,bezeichnung,artikelnr,typ FROM katalog order by index";
            OleDbConnection cnn = new OleDbConnection(strCnn);
            OleDbCommand myCommand = new OleDbCommand(strAccessSelect, cnn);
            OleDbDataAdapter myDataAdapter = new OleDbDataAdapter(myCommand);
            cnn.Open();
            myDataSet = new DataSet();
            try
            {
                myDataAdapter.Fill(myDataSet, "katalog");
                myDataTable = myDataSet.Tables["katalog"];
                myDataTable.Columns[0].ColumnName = "Index";
                myDataTable.Columns[1].ColumnName = "Bezeichnung";
                 myDataTable.Columns[2].ColumnName = "Artikel-Nr.";
               myDataView = new DataView(myDataTable,
                "typ = 1", "", DataViewRowState.CurrentRows);
             dataGridView1.DataSource = myDataView;
            }

            catch
            {
                MessageBox.Show(" Error!!!", "Suchergebniss");
            }
             
            finally
            {
                dataGridView1.Columns[0].Width = 70;
                dataGridView1.Columns[1].Width = 400;
                dataGridView1.Columns[0].Width = 77;
                dataGridView1.Columns[3].Visible = false;
                cnn.Close();
            }

        }