数据绑定来自Ms access 2013的OleDbDataReader的DropDownList

时间:2014-12-31 09:59:29

标签: c# asp.net ms-access ms-access-2013

我正在尝试使用我的数据库MS Access 2013(accdb文件)绑定我的下拉列表数据这是我的代码

 protected void Page_Load(object sender, EventArgs e)
    {
        string str = "Provider=Microsoft.ACE.OleDB.12.0; Data Source=C:\\Users\\Dima\\Documents\\Visual Studio 2013\\Projects\\networklab1\\bin\\weblabdb.accdb";
        OleDbConnection db = new OleDbConnection(str);
        db.Open();
        string st = "select areaName from area;";
        OleDbCommand dbc = new OleDbCommand(st, db);
        OleDbDataReader read = dbc.ExecuteReader();

        DropDownList1.DataSource = read;

        DropDownList1.DataBind();
        read.Close();
        db.Close();
    }

我得到的是一行" System.Data.Common.DataRecordInternal" 什么是我的错误以及如何解决这个问题! 谢谢

2 个答案:

答案 0 :(得分:2)

您错过了检查Postback以及您遗失DataTextFieldDataValueField

protected void Page_Load(object sender, EventArgs e)
    {

if(!Page.IsPostBack)
{

string str = "Provider=Microsoft.ACE.OleDB.12.0; Data Source=C:\\Users\\Dima\\Documents\\Visual Studio 2013\\Projects\\networklab1\\bin\\weblabdb.accdb";
        OleDbConnection db = new OleDbConnection(str);
        db.Open();
        string st = "select areaName from area;";
        OleDbCommand dbc = new OleDbCommand(st, db);
        OleDbDataReader read = dbc.ExecuteReader();

        DropDownList1.DataSource = read;
        DropDownList1.DataTextField="areaName";       //missing this
        DropDownList1.DataValueField="areaName";        //missing this
        DropDownList1.DataBind();
        read.Close();
        db.Close();

}

    }

答案 1 :(得分:1)

你缺少DataTextField和DataValueField。试试这个 -

    protected void Page_Load(object sender, EventArgs e)
    {
string str = "Provider=Microsoft.ACE.OleDB.12.0; Data Source=C:\\Users\\Dima\\Documents\\Visual Studio 2013\\Projects\\networklab1\\bin\\weblabdb.accdb";
        OleDbConnection db = new OleDbConnection(str);
        db.Open();
        string st = "select areaName from area;";
        OleDbCommand dbc = new OleDbCommand(st, db);
        OleDbDataReader read = dbc.ExecuteReader();

        DropDownList1.DataSource = read;
        DropDownList1.DataTextField="ShownTextFieldFromDatabaseResults";;       
        DropDownList1.DataValueField="ValueFieldFromDatabaseResults";        
        DropDownList1.DataBind();
        read.Close();
        db.Close();

    }