当前位置:编程学习 > C#/ASP.NET >>

C# access数据库显示到listview,选中一项显示到label

private void listView1_SelectedIndexChanged(object sender, EventArgs e)//----------------------------------listView1选中一项显示到lable中---------------------------------
        {
            try
            {
                if (listView1.SelectedItems.Count > 0)
                {
                    if (dbconn.State != ConnectionState.Open)
                    {
                        dbconn.Open();
                    }
                    this.label4.Text = "";
                    string strSql = "select * from table1 where ID='%" + listView1.SelectedItems[0].Tag.ToString() + "%'";
                    OleDbCommand oledbCom = new OleDbCommand(strSql, dbconn);
                    OleDbDataReader rd = oledbCom.ExecuteReader();

                    if (rd.Read()) //如果oledbDR.Read()读取内容不为空,则继续。注意下,每执行一条oledbDR.Read(),oledbDR会自动转到下一条信息
                    {
                        ID = Convert.ToInt32(rd["ID"]);
                        this.label4.Text = rd["question"].ToString();
                        this.label5.Text = rd["answer"].ToString();

                    }
                    rd.Close();    //必须关闭OleDbDataReader
                    dbconn.Close();
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }


如果这样写就会提示未将对象引用设置到对象的实例,请问是什么情况?小弟第一次写access数据库的东西,对这个不是很了解,望各位大大指教 C#  access listview label --------------------编程问答-------------------- listView1.SelectedItems[0].Tag.ToString() 

这个没有取到值.tag应该是null --------------------编程问答--------------------
引用 1 楼 yyantifa 的回复:
listView1.SelectedItems[0].Tag.ToString() 

这个没有取到值.tag应该是null

那应该怎么修正呢? --------------------编程问答-------------------- listView1.SelectedItems[0]是一个对象,你绑定的是一个数据表,所以应该是一个datarow,你可以这样用
((DataRow)listView1.SelectedItems[0])["question"]。ToString();//其中question为字段名,楼主可以试一试 --------------------编程问答-------------------- 当然,用之前可以先尝试判断一下Type,看是不是DataRow --------------------编程问答-------------------- 學會看異常的提示,提示寫的很清楚,調用方法前,檢查是否為NULL
你可以在sql語句之前先判斷Listview.selecteditems[0].tag是否為空,然後再考慮拼接字符串
你這個寫法其實不妥... --------------------编程问答--------------------
引用 3 楼 lcawen 的回复:
listView1.SelectedItems[0]是一个对象,你绑定的是一个数据表,所以应该是一个datarow,你可以这样用
((DataRow)listView1.SelectedItems[0])["question"]。ToString();//其中question为字段名,楼主可以试一试

不好意思,请问具体在哪里改,我把
listView1.SelectedItems[0].Tag.ToString()
这一句替换掉不行,对于这个DataRow我不是很熟练,见谅 --------------------编程问答--------------------
引用 5 楼 wj150158472 的回复:
學會看異常的提示,提示寫的很清楚,調用方法前,檢查是否為NULL
你可以在sql語句之前先判斷Listview.selecteditems[0].tag是否為空,然後再考慮拼接字符串
你這個寫法其實不妥...

C#新手一枚,代码不是很规范,这个判断怎么写?
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,