Откройте строку в DataGridView для редактирования, DGV имеет SQL-сервер в C # - PullRequest
0 голосов
/ 03 июля 2010

Хорошо, у меня есть DataGridView для некоторого программного обеспечения для управления проектами, я хочу иметь возможность дважды щелкнуть строку, чтобы открыть форму и заполнить поля и поля со списком соответствующими данными, чтобы я мог изменитьчто когда-либо должно быть изменено.В этом случае самым важным является изменение статуса.Как и в ПО для управления проектами, у меня есть ошибки и задачи, которые имеют статус и должны быть изменены в какой-то момент, очевидно, когда ошибка устранена или задача завершена.

Итак, я покажу, как DGV получает данные для раздела ошибок:

public void ViewAllBugs()
        {
            DataClasses1DataContext dc = new DataClasses1DataContext(sConnectionString);

            var Bugs =
                (from data in dc.GetTable<Bug>()
                 from user in dc.GetTable<User>()
                 from projects in dc.GetTable<Project>()
                 from priority in dc.GetTable<Priority>()
                 from status in dc.GetTable<Status>()
                 from category in dc.GetTable<Category>()
                 where data.UserID == user.UserID && data.ProjectID == projects.ProjectID && data.PriorityID == priority.PriorityID && status.StatusID == data.StatusID && category.CategoryID == data.CategoryID
                 select new
                 {
                     Bug = data.Name,
                     Project = projects.Name,
                     Priority = priority.Priority1,
                     Status = status.Name,
                     Category = category.Category1,
                     Assigned_To = user.Username,
                     Start = data.Opened_Date,
                     End = data.Closed_Date,
                     Description = data.Description,
                 });

            dgvBugs.DataSource = Bugs;
        }

Как вы видите, мой подход довольно упрощен.Я также покажу код для создания новой ошибки.ComboBox были DataBound с использованием опции GUI, в отличие от меня, на самом деле жестко его кодировать.

public void CreateBug()
        {
            string sBugName = txtName.Text;
            string sDescription = txtDescription.Text;
            int iProject = Convert.ToInt32(cbProject.SelectedValue);
            int iPriority = Convert.ToInt32(cbPriority.SelectedValue);
            int iStatus = Convert.ToInt32(cbStatus.SelectedValue);
            int iCategory = Convert.ToInt32(cbCategory.SelectedValue);
            int iUser = Convert.ToInt32(cbAssigned.SelectedValue);
            DateTime dtOpen = dateOpened.Value;
            DateTime dtClosed = dateClosed.Value;

            DataClasses1DataContext dc = new DataClasses1DataContext(sConnectionString);

            Table<Bug> tBug = dc.GetTable<Bug>();
            Bug nBug = new Bug();

            nBug.Name = sBugName;
            nBug.ProjectID = iProject;
            nBug.PriorityID = iPriority;
            nBug.StatusID = iStatus;
            nBug.CategoryID = iCategory;
            nBug.UserID = iUser;
            nBug.Opened_Date = dtOpen;
            nBug.Closed_Date = dtClosed;
            nBug.Description = sDescription;

            tBug.InsertOnSubmit(nBug);
            dc.SubmitChanges();

            this.Close();
        }

Теперь я знаю, что там есть несколько кусков небрежного кода, но я новичок в C #, и я лично думаю,Я не так уж плохо.Но если вы видите что-то, что должно быть улучшено, пожалуйста, не стесняйтесь упоминать об этом.

Мои DataClasses1DataContext организованы так, что существуют ассоциации между UserID, PriorityID, CategoryID, UserID, ProjectID и StatusID.

Итак, я хочу иметь возможность щелкнуть Bug1 (пример ошибки) в DGV, и для этого нужно открыть форму (которую я еще не сделал), и мне нужно иметь возможность редактировать каждый фрагмент данных.в этой ошибке.

Если вам потребуется дополнительная информация, я буду более чем рад предоставить ее!

Спасибо,

Брендан

1 Ответ

0 голосов
/ 03 июля 2010

DataGridView будет иметь событие CellDoubleClick.Вы можете использовать это для ответа на пользовательский интерфейс, однако не забывайте, что вам нужно игнорировать недопустимые индексы строк или столбцов (-1 с).Я верю, что это обрезка, если люди нажимают на заголовки строк / столбцов.

Вы аргументы, чтобы получить индекс строки, а затем строку.Из строки вы можете получить доступ к свойству DataBoundItem.Это должно быть напрямую приведено к Bug.

. Затем вы можете передать эту ссылку в новую форму, привязать ее к элементам управления и внести изменения.Поскольку он является справочным, он обновит данные и в другой форме - хотя вам, возможно, придется обновить свою сетку.

Затем вы можете решить, обновлять ли базу данных в форме сведений или в основной форме (Iлично сделаю сохранение части формы сетки).

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