[英]Datagrid Issue With Selecting One Cell Out Of A Row
我將嘗試使其變得簡短而甜美。 我已經看到了如何使用datagridview做到這一點,但是我似乎無法使用普通的datagrid找到它。 我有一個SelectedCellsChanged事件,該事件觸發后,我想在所選行的列中獲取一個字段。 因此,當他們選擇一個enite行時,我想拉出truckercode字段,這樣我就可以對該行的truckercode單元執行SQL查詢。 我沒有為我的數據網格進行綁定。 我如何填充數據網格的代碼是
using (SqlConnection connection = new SqlConnection("server=Server; database=db; user id=user; password=user"))
{
connection.Open();
using (SqlCommand command = new SqlCommand("SELECT * FROM SOMETABLE JOIN OTHERTABLE ON SOMETABLE.TRUCKERCODE = OTHERTABLE.TRUCKERCODE WHERE SOMETABLE.ACTIVE = 1 AND OTHERTABLE.ACTIVE = 1", connection))
{
SqlDataAdapter reader = new SqlDataAdapter(command);
DataSet dataSet = new DataSet();
reader.Fill(dataSet);
FirstGrid.ItemsSource = dataSet.Tables[0].DefaultView;
}
connection.Close();
connection.Dispose();
}
我認為基於DataGrid Get Selected,我認為我的代碼應類似於
private void FirstGrid_SelectedCellsChanged(object sender, SelectedCellsChangedEventArgs e)
{
DataGrid grid = sender as DataGrid;
DataRowView row = grid.SelectedItems as DataRowView;
MessageBox.Show("" + grid.SelectedItems.Count);
if (grid.SelectedItems.Count > 0)
{
MessageBox.Show(row["TruckerCode"].ToString());
}
}
但是我得到了一個超出范圍異常的參數。
另一個有用的文章是“ 循環遍歷DataView”
我解決了自己的問題。 我希望將來閱讀此內容並希望從整個選定行中的選定列中獲取值的任何人都可以使用它。 本示例將為每個單元格選擇多少行打印每個單元格。
var grid = FirstGrid.SelectedItems;
foreach(DataRowView row in grid)
{
if (grid.Count == 1)
{
MessageBox.Show(row["NameOfTheColumn"].ToString());
}
}
如果添加grid.Count == 1,則可以防止觸發多行代碼。 因此,DataRowView中只有1行,否則可能會有多個DataRowViews。
您可以在dataGrid中定義CellClick處理程序
<DataGrid x:Name="dataGrid1" HorizontalAlignment="Left" Margin="235,12,0,0" VerticalAlignment="Top" Height="218" Width="501"
AutoGenerateColumns="True" ItemsSource="{Binding}">
<DataGrid.CellStyle>
<Style TargetType="{x:Type DataGridCell}">
<EventSetter Event="GotFocus" Handler="CellClick"/>
</Style>
</DataGrid.CellStyle>
</DataGrid>
用戶單擊dataGrid中的單元格后,將在您的后台類中觸發以下方法。 “索引”是所選單元格包括的值:
void CellClick(object sender, RoutedEventArgs e)
{
DataGridCell cell = sender as DataGridCell;
string index = cell.Column.DisplayIndex.ToString();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.