当我单击按钮时,我有一些关于获取数据网格的特定行的值的问题。有没有人知道,如果有另一种方式获得数据网格的值时,按钮单击。
My XAML Datagrid Code:
<DataGrid Grid.Row="2" x:Name="coursesList" Margin="20"
AlternationCount="2" GridLinesVisibility="Horizontal"
VerticalGridLinesBrush="#00000000"
HorizontalGridLinesBrush="#FFD6D6D6"
AlternatingRowBackground="#FFE2E2E2"
RowDetailsVisibilityMode="Collapsed"
CanUserAddRows="False">
<DataGrid.Columns>
<DataGridTextColumn Header="ID" Width="40"
Binding="{Binding Path='id'}"/>
<DataGridTextColumn Header="Code" Width="100"
Binding="{Binding Path='courseCode'}"/>
<DataGridTextColumn Header="Descriptive Title" Width="*"
Binding="{Binding Path='descriptiveTitle'}"/>
<DataGridTextColumn Header="Lec" Width="50"
Binding="{Binding Path='lec'}"/>
<DataGridTextColumn Header="Lab" Width="50"
Binding="{Binding Path='lab'}"/>
<DataGridTextColumn Header="Units" Width="61"
Binding="{Binding Path='units'}"/>
<DataGridTextColumn Header="Instructor" Width="*"
Binding="{Binding Path='instructor'}"/>
<DataGridTemplateColumn Header="Edit">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button x:Name="editCourseBtn" Content="Edit" Click="editCourseBtn_Click"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
My c# code:
private void editCourseBtn_Click(object sender, RoutedEventArgs e)
{
try
{
DataRowView dataRowView = (DataRowView)((Button)e.Source).DataContext;
string id = dataRowView[0].ToString();
string courseCode = dataRowView[1].ToString();
string descriptiveTitle = dataRowView[2].ToString();
string lec = dataRowView[3].ToString();
string lab = dataRowView[4].ToString();
string units = dataRowView[5].ToString();
string instructor = dataRowView[6].ToString();
MessageBox.Show(id);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message.ToString());
}
}
转换sender
参数而不是e.Source
:
DataRowView dataRowView = (DataRowView)((Button)sender).DataContext;
创建一个与数据网格值相对应的类或模型,并使用此方法:
Course edtCourse = ((FrameworkElement)sender)。DataContext作为Course;
课程是指班级课程。
private void editCourseBtn_Click(object sender, RoutedEventArgs e)
{
try
{
Course edtCourse = ((FrameworkElement)sender).DataContext as Course;
int id = edtCourse.id;
string courseCode = edtCourse.courseCode;
string descriptiveTitle = edtCourse.descriptiveTitle;
int lec = edtCourse.lec;
int lab = edtCourse.lab;
int units = edtCourse.units;
string instructor = edtCourse.instructor;
EditCourse edtCourseWindow = new EditCourse();
edtCourseWindow.courseCoudeTxtBox.Text = courseCode;
edtCourseWindow.descriptiveTitleTxtBox.Text = descriptiveTitle;
edtCourseWindow.lecTxtBox.Text = lec.ToString();
edtCourseWindow.labTxtBox.Text = lab.ToString();
edtCourseWindow.unitsTxtBox.Text = units.ToString();
edtCourseWindow.instructorTxtBox.Text = instructor;
edtCourseWindow.idParameter.Text = id.ToString();
edtCourseWindow.ShowDialog();
fetchCourses();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message.ToString());
}
}