c#WPF对来自datagrid的多个基执行查询

c#WPF对来自datagrid的多个基执行查询,c#,wpf,datagrid,C#,Wpf,Datagrid,我有datagrid和我所有的Bases信息: 1.第一列-复选框 2.第二列-数据库名称 3.info 4.info 我需要对chekbox数据库中的每个checked执行查询。 在Winforms中,我使用以下代码: foreach (DataGridViewRow item in dataGridView1.Rows) { DataGridViewCheckBoxCell chk = item.Cells[0] as DataGridViewCheckBox

我有datagrid和我所有的Bases信息: 1.第一列-复选框 2.第二列-数据库名称 3.info 4.info 我需要对chekbox数据库中的每个checked执行查询。 在Winforms中,我使用以下代码:

  foreach (DataGridViewRow item in dataGridView1.Rows)
            {
  DataGridViewCheckBoxCell chk = item.Cells[0] as DataGridViewCheckBoxCell;


                if (Convert.ToBoolean(chk.Value) == true)
                {
在ExecuteOnQuery此行之前:

connection.ChangeDatabase(item.Cells[1].Value.ToString());
有人能帮我转换成WPF版本吗? 如果选中第一列(复选框),我需要显示第二列(行)

XAML:

<DataGrid x:Name="dataGrid" HorizontalAlignment="Left" Margin="490,0,0,0" VerticalAlignment="Top" Height="142" Width="728" SelectionChanged="dataGrid_SelectionChanged" >
                        <DataGrid.Columns>
                            <DataGridCheckBoxColumn Binding="{Binding BoolProperty, UpdateSourceTrigger=PropertyChanged}">
                                <DataGridCheckBoxColumn.ElementStyle>
                                    <Style TargetType="CheckBox"/>
                                </DataGridCheckBoxColumn.ElementStyle>
                            </DataGridCheckBoxColumn>
                        </DataGrid.Columns>
                    </DataGrid>

w

您可以在
数据视图中迭代:

DataView dv = dataGrid.ItemsSource as DataView;
foreach(DataRowView drv in dv)
{
    if(Convert.ToBoolean(drv["BoolProperty"]))
    {
        //row is checked...
    }
}
当然,您的
DataTable
必须包含一个名为“BoolProperty”的列,因为您将
复选框绑定到此列。如果没有,您需要添加一个:

con.server = this.server;
con.user = this.user;
con.password = this.password;
con.OpenConnection();
con.SqlQuery(Properties.Resources.databaseCatalogResource);
DataTable dt = con.QueryEx();
con.da.Fill(dt);
dt.Columns.Add(new DataColumn("BoolProperty", typeof(bool))); //<---
dataGrid.ItemsSource = dt.DefaultView;
con.server=this.server;
con.user=this.user;
con.password=this.password;
con.OpenConnection();
con.SqlQuery(Properties.Resources.databaseCatalogResource);
DataTable dt=con.QueryEx();
连续数据填充(dt);

添加(新的数据列(“BoolProperty”,typeof(bool))//没人能帮我吗(这有助于我,但会显示所有行的文本字段。如果是第一行,则需要显示第二行(复选框)已选中。如果您需要datagrid中的逻辑,我建议使用ObservaleCollection并将其用作datagrid的itemsource。如果ObservaleCollection发生更改,您可以使用事件对此作出反应。在event方法中,您可以添加/删除行或使用其他逻辑来更改集合。集合的更改是自动进行的自动传递到UI/Datagrid。不,我不需要逻辑。我只需要检查行…:(如何设置此列的值?我尝试这样做:DataRow dr=dt.NewRow();dr[“BoolProperty”]=true;但不工作如果有其他问题,请问一个新问题。
con.server = this.server;
con.user = this.user;
con.password = this.password;
con.OpenConnection();
con.SqlQuery(Properties.Resources.databaseCatalogResource);
DataTable dt = con.QueryEx();
con.da.Fill(dt);
dt.Columns.Add(new DataColumn("BoolProperty", typeof(bool))); //<---
dataGrid.ItemsSource = dt.DefaultView;