как предотвратить увеличение столбца DataGridView - PullRequest
0 голосов
/ 25 августа 2011

У меня есть DataGridView. Я связываю DataGridBiew с источником данных, как показано ниже ...

  private void form_load(object sender, eventargs e)
  {
         var members = xyz.members(..
                         select new {
                            blah....
                               blahh...
                             });
         memberbindingsource.datasource = members
         membergridview1.datasource = memberbindingsource;

         // at here i have added button column to membergridview 1 
         // like this....
         DataGridViewButtonColumn column = new DataGridViewButtonColumn();
         membergridview1.Columns.Add(column);
         column.FlatStyle = FlatStyle.Standard;
         column.DefaultCellStyle.BackColor = Color.Green;
         column.Text = "ADD";
         column.HeaderText = "Add";
         column.UseColumnTextForButtonValue = true;
         column.Name = "btnadd";

это прекрасно работает при загрузке формы, но где-то я проверяю условия в выпадающем списке вот так

            if(combobox1.text == "abc")
            {

                   then  i have to loaded the grid view again 
                    like this ...
                     var members = xyz.members(..
                         select new {
                            blah....
                               blahh...
                             });
                         memberbindingsource.datasource = members
                         membergridview1.datasource = memberbindingsource;

     at here i have added button column to membergridview 1 
        like this....
        DataGridViewButtonColumn column = new DataGridViewButtonColumn();
       membergridview1.Columns.Add(column);
        column.FlatStyle = FlatStyle.Standard;
        column.DefaultCellStyle.BackColor = Color.Green;
        column.Text = "ADD";
        column.HeaderText = "Add";
        column.UseColumnTextForButtonValue = true;
        column.Name = "btnadd";

      }

когда в первый раз выберите текст combobox1 "abc", при просмотре таблицы данных на котором отображается столбец кнопки, это хорошо ...

когда я проверяю первое состояние (как это combobox1.text == "abc"), DataGridView отображает детали в порядке, но если я проверяю снова то же самое условие, он снова добавляет столбец кнопки.

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

Как я могу предотвратить это - не увеличивая столбец кнопки снова и снова?

1 Ответ

0 голосов
/ 25 августа 2011

Это потому, что каждый раз, когда загружается ваша страница, вы добавляете этот столбец. Поэтому, независимо от того, является ли это новым вызовом или обратным вызовом, этот столбец добавляется. Чтобы правильно выполнить эту работу, включите фрагмент кода, который добавляет следующий столбец, если условие

if (!IsPostBack)
    {
        //add your column add code snippet here 

    }

поэтому ваш код будет выглядеть примерно так

if (!IsPostBack)
    {
        DataGridViewButtonColumn column = new DataGridViewButtonColumn();
       membergridview1.Columns.Add(column);
        column.FlatStyle = FlatStyle.Standard;
        column.DefaultCellStyle.BackColor = Color.Green;
        column.Text = "ADD";
        column.HeaderText = "Add";
        column.UseColumnTextForButtonValue = true;
        column.Name = "btnadd";
    }
...