[新人向] C# WPF datagrid不显示

Amazing_w_ 2019-06-07 08:27:40
我在用C#做一个学生信息管理系统,想用datagrid显示数据库的表,建立一个datagrid叫dg1,用的odbc连接的数据库,但是不知道为什么调试的时候不显示我的列表
求大神解答!!!
private void DataGrid_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
string sql = "select* from s;";
string constructorString = "Dsn=学生信息;uid=root";
using (OdbcConnection conn = new OdbcConnection(constructorString))
{

OdbcDataAdapter oda = new OdbcDataAdapter(sql, conn);
DataSet ds = new DataSet();
oda.Fill(ds);
dg1.ItemsSource = ds.Tables[0].DefaultView;
}

}
...全文
295 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Amazing_w_ 2019-06-08
  • 打赏
  • 举报
回复
引用 4 楼 智者知已应修善业 的回复:
数据库本来就很简单 1连接数据库的语句 2打开数据库 3增删改查数据表 4显示数据表 如此而已,学会后早就不玩了,无非就那些,但数据库应用无穷。
我数据库是没问题的,我可以通过按键进行增删改,但是我目前的问题是,我的datagrid不显示我的表格信息,我的疑惑不在数据库上,在datagrid上
  • 打赏
  • 举报
回复
数据库本来就很简单
1连接数据库的语句
2打开数据库
3增删改查数据表
4显示数据表
如此而已,学会后早就不玩了,无非就那些,但数据库应用无穷。
  • 打赏
  • 举报
回复
引用 2 楼 Amazing_w_ 的回复:
[quote=引用 1 楼 智者知已应修善业 的回复:]
1查看是否已连接数据库且打开
2查看查询出来的表是否有内容

请问要如何实现呢[/quote]
怎么实现只有你自己最清楚,别人如何得知你的数据库是什么名称和什么类型?只要按数据库类型要求写连接字符串,连接和打开数据库才能读数据表,这些你学习时该都有的
Amazing_w_ 2019-06-08
  • 打赏
  • 举报
回复
引用 6 楼 智者知已应修善业 的回复:
那照你说的意思就是可以读取数据到表且表也有内容了,那就检查你绑定的语句是否有问题 WPF没去玩,通常绑定好像不是你这样写的绑定语句,通常是.DataSource = 读取的数据表,这样就可以显示出来 dg1.ItemsSource 这个似乎要进行一番处理才可以,查看微软文档即可。
datasource是WinForm里的操作,我同学用的这个,是datagridview,在WPF里是datagrid,只能是itemsource,不过还是谢谢你了
Amazing_w_ 2019-06-08
  • 打赏
  • 举报
回复
我自己解决了!!! 是.xaml出了问题,我开始以为双击datagrid出来的函数在那里面写就行了,结果不是需要在Loaded里声明函数是啥,双击出来的函数的参数也不对 代码如下
private void Button_Click_Serch(object sender, RoutedEventArgs e)
        {
            string constructorString = "Dsn=学生信息;uid=root";
            OdbcConnection myConnnect = new OdbcConnection(constructorString);
            myConnnect.Open();
            if (string.IsNullOrWhiteSpace(STUDENTNO.Text))
            {
                string sql = "select* from s";
                DataSet dataSet = new DataSet();
                OdbcDataAdapter odbcDataAdapter = new OdbcDataAdapter(sql, myConnnect);
                odbcDataAdapter.Fill(dataSet, "s");
                DataView dataView = new DataView(dataSet.Tables["s"]);
                dataGrid1.ItemsSource = dataView;
            }
            else
            {
                int i = Convert.ToInt32(STUDENTNO.Text);
                string sql = "select* from s where SNO=" + i + ";";
                DataSet dataSet = new DataSet();
                OdbcDataAdapter odbcDataAdapter = new OdbcDataAdapter(sql, myConnnect);
                odbcDataAdapter.Fill(dataSet, "s");
                DataView dataView = new DataView(dataSet.Tables["s"]);
                dataGrid1.ItemsSource = dataView;
            }
        }

<DataGrid Name="dataGrid1" ItemsSource="{Binding}"  AutoGenerateColumns="False" HorizontalAlignment="Left" Height="163" Margin="580,426,0,0" VerticalAlignment="Top" Width="439" Loaded="Button_Click_Serch" >
            <DataGrid.Columns>
                <DataGridTextColumn Header="SNO" Width="100" Binding="{Binding Path=SNO,Mode=OneWay}"/>
                <DataGridTextColumn Header="SNAME" Width="100" Binding="{Binding Path=SNAME,Mode=OneWay}" />
                <DataGridTextColumn Header="SAGE" Width="100" Binding="{Binding Path=SAGE,Mode=OneWay}"/>
                <DataGridTextColumn Header="SDEPT" Width="100" Binding="{Binding Path=SDEPT,Mode=OneWay}"/>
            </DataGrid.Columns>
        </DataGrid>
  • 打赏
  • 举报
回复
你先试一下.DataSource 绑定是否能显示数据?
  • 打赏
  • 举报
回复
那照你说的意思就是可以读取数据到表且表也有内容了,那就检查你绑定的语句是否有问题
WPF没去玩,通常绑定好像不是你这样写的绑定语句,通常是.DataSource = 读取的数据表,这样就可以显示出来
dg1.ItemsSource 这个似乎要进行一番处理才可以,查看微软文档即可。


Amazing_w_ 2019-06-07
  • 打赏
  • 举报
回复
引用 1 楼 智者知已应修善业 的回复:
1查看是否已连接数据库且打开 2查看查询出来的表是否有内容
请问要如何实现呢
  • 打赏
  • 举报
回复
1查看是否已连接数据库且打开
2查看查询出来的表是否有内容

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧