【问题标题】:how to get data from another datatable如何从另一个数据表中获取数据
【发布时间】:2016-05-04 18:29:24
【问题描述】:

如何从 sql 表中获取数据到我的另一个列表视图中

    public SqlConnection conn;
    public SqlCommand cmd;
    string connstring = (@"Data Source=SINDALSQL\MSSQL14; Initial Catalog=OminiData; Integrated Security =True");
    string data = ("SELECT Billed, Mærke, Model, Årgang, [Motor Type], Krydsmål, Centerhul, Møtrik, Bolter, Dæk, Fælge FROM Hjuldata");
    string hast = ("SELECT Kode, Hastighed FROM Hastighed_indeks");

    private void win_Loaded(object sender, RoutedEventArgs e)
    {
        binddata();
        bindhast();
    }

这个有效

    private void binddata()
    {
        DataTable dt = new DataTable();
        using (SqlDataAdapter adp = new SqlDataAdapter(data, connstring))
        {
            adp.Fill(dt);
            hjuldata.DataContext = dt;
        }
    }

<GridViewColumn Header="Mærke" Width="140" >
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock x:Name="Txt" Text="{Binding Path=Mærke}" Foreground="#FF00FB0B" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>

这个是我遇到的麻烦

    private void bindhast()
    {
        DataTable dts = new DataTable();
        using (SqlDataAdapter adph = new SqlDataAdapter(hast, connstring))
        {
            adph.Fill(dts);
            hast_list.DataContext = dts;
        }
    }

 <GridViewColumn Header="Hast Symbol"
 DisplayMemberBinding="{Binding Path=Kode}"
 Width="300"/>
 <GridViewColumn Header="Max Km/t"
  DisplayMemberBinding="{Binding Path=Hastighed}"
                                Width="200"/>

这就是列表视图的全部代码

<ListView x:Name="hast_list" Background="#FF303030" BorderBrush="#FF303030" Foreground="#FF00FB0B" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" Height="431" Canvas.Left="632" Canvas.Top="34" Width="607">
                    <ListView.View>
                        <GridView>
                            <GridView.ColumnHeaderContainerStyle>
                                <Style TargetType="{x:TypeGridViewColumnHeader}">
                                    <Setter Property="Background" Value="Black" />
                                    <Setter Property="Foreground" Value="#FFEAEAEA" />
                                    <Setter Property="FontWeight" Value="Bold" />
                                </Style>
                            </GridView.ColumnHeaderContainerStyle>
                            <GridViewColumn Header="Hast Symbol"
                                DisplayMemberBinding="{Binding Path=Kode}"
                                Width="300"/>
                            <GridViewColumn Header="Max Km/t"
                                DisplayMemberBinding="{Binding Path=Hastighed}"
                                Width="200"/>
                        </GridView>
                    </ListView.View>
                </ListView>

【问题讨论】:

  • 如果你想要一个从多个表中读取的数据集......那么听起来你想要一个JOIN
  • 为什么要在字符串常量周围加上()
  • 在 win_loaded 上,如果你在 binddata() 之前运行 bindhast(),它的行为是否相同?
  • 我设置它们的优先级无关紧要
  • 我不确定这是否是我需要的连接语句,因为 2 个表具有不同类型的数据,我不想在单独的列表视图中填充整个表

标签: c# wpf datatable


【解决方案1】:

在两个表上设置数据源后调用数据绑定事件。

private void binddata()
{
    DataTable dt = new DataTable();
    using (SqlDataAdapter adp = new SqlDataAdapter(data, connstring))
    {
        adp.Fill(dt);
        hjuldata.DataContext = dt;
        hjuldata.DataBind();
    }
}

private void bindhast()
{
    DataTable dts = new DataTable();
    using (SqlDataAdapter adph = new SqlDataAdapter(hast, connstring))
    {
        adph.Fill(dts);
        hast_list.DataContext = dts;
        hast_list.DataBind();
    }
}

【讨论】:

  • 给我一个错误'ListView'不包含'DataBind'的定义,并且找不到接受'ListView'类型的第一个参数的扩展方法'DataBind'(您是否缺少使用指令还是程序集引用?
  • "接受 ListView 类型的第一个参数"?没有论据。如果您尝试将 ListView 作为参数传递,请不要这样做。按照我写的方式去做。
  • 我再次尝试复制粘贴,但仍然出现同样的错误
  • 你是如何创建你的 ListViews 的?
  • 这取决于样式,其中一个与扩展器分组,我使用文本块,然后我有一个只是默认女巫,我已经发布了代码
【解决方案2】:

好像你不见了

ItemsSource="{Binding}"

这应该可以解决

  <ListView x:Name="hast_list" Background="#FF303030" BorderBrush="#FF303030" Foreground="#FF00FB0B" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" Height="431" Canvas.Left="632" Canvas.Top="34" Width="607" ItemsSource="{Binding}">
                <ListView.View>
                    <GridView>
                        <GridView.ColumnHeaderContainerStyle>
                            <Style TargetType="{x:TypeGridViewColumnHeader}">
                                <Setter Property="Background" Value="Black" />
                                <Setter Property="Foreground" Value="#FFEAEAEA" />
                                <Setter Property="FontWeight" Value="Bold" />
                            </Style>
                        </GridView.ColumnHeaderContainerStyle>
                        <GridViewColumn Header="Hast Symbol"
                            DisplayMemberBinding="{Binding Path=Kode}"
                            Width="300"/>
                        <GridViewColumn Header="Max Km/t"
                            DisplayMemberBinding="{Binding Path=Hastighed}"
                            Width="200"/>
                    </GridView>
                </ListView.View>
            </ListView>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多