2015-01-30 2 views
1

Я хочу сохранить это короткое и сладкое. Я не могу понять, как настроить фокус и перейти к определенной строке на основе пользовательского ввода, например TextBox или ComboBox. Я продолжаю пытаться разными способами попытаться написать его, но без успеха. У меня есть combobox, что когда они вставляют входные данные, такие как идентификатор 1567, я хочу, чтобы datagrid обнаружил строку с идентификатором переменной 1567. Я знаю, что это нужно было делать раньше, поскольку кажется, что люди действительно будут использовать в приложении.Выбор и фокусировка Datagrid на основе переменной

Для уточнения более

У меня есть эта таблица

ID FirstName LastName Comments 
123 Kyle  Bro  Comments??? 
145 Zach  Gred Something?? 
178 Derrick  Davidson More?? 

Я хочу, чтобы выбрать строку, где поле ID равно 145, а не фактическое количество строк, которое будет 1. Я перемещающий данные из базы данных, поэтому я хочу сосредоточиться на основе ячейки, а не идентификатора строки.

Благодаря D_Learning я получил его, чтобы выбрать с кодом

try 
{ 
    if(dataGrid2.SelectedItem == null) 
    { 
     dataGrid2.SelectedItem = dataGrid2.Items.GetItemAt(0); 
    } 
    var selectedObj = dataGrid2.Items.Cast<DataRowView>().FirstOrDefault(a => a[0].ToString() == IDComboBox.Text); 
    if (selectedObj != null) 
    { 
      dataGrid2.SelectedItem = selectedObj; 
      dataGrid2.ScrollIntoView(selectedObj); 
      dataGrid2.Focus(); 
    } 
} 
catch (InvalidOperationException e) 
{ 

} 

Мои проблемы были решены с добавлением dataGrid2.SelectedItem = dataGrid2.Items.GetItemAt (0); и проверка на нуль.

+0

на самом деле это короткий и сладкий ... 'Это на самом деле довольно просто, и если вы выполните поиск в Google, вы найдете много примеров 'здесь' Free-B' для ya http://stackoverflow.com/questions/8635731/how-to-set-focus-on-a-specific-row-in-a-datagrid-gridview – MethodMan

+0

@MethodMan это не то, что я ищу. Я предполагаю, что мне понадобится инструкция linq. –

+0

Эта ссылка предоставляет множество способов использования Linq, которую вы просто должны знать, как использовать ее против TextBox. – MethodMan

ответ

1

Я думаю, что вы можете добиться того, что вы ищете, как показано ниже:

var selectedObj = dgGrid.Items.Cast<YourClass>().First(a=> a.ID = txtFilter.Text); 
if(selectedObj != null) 
    dgGrid.SelectedItem = selectedObj; 

Пожалуйста, дайте мне знать, если выше не работает для вас.

+0

Хорошо, что эта часть работает, теперь у меня есть новая проблема, которую я добавил выше. –

+0

Насколько я понимаю, ошибка, которую вы получаете, может быть вызвана dataGrid2.ScrollIntoView (selectedObj); можете ли вы проверить, так ли это. Также, если вы можете скопировать точную ошибку, которая появляется, возможно, это может быть другое простое решение. –

+0

Нет, это не ошибка с dataGrid2.ScrollIntoView (selectedObj). Это что-то делать, когда ничего уже не выбрано, он не будет выбирать строку. –