无法强制转换System.Data.DataRowView类型的对象



当我单击按钮时,我有一些关于获取数据网格的特定行的值的问题。有没有人知道,如果有另一种方式获得数据网格的值时,按钮单击。

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());
}
}

相关内容

最新更新