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

Posted

技术标签:

【中文标题】数据绑定 DropDownList 与来自 Ms access 2013 的 OleDbDataReader【英文标题】:data bind DropDownList with OleDbDataReader from Ms access 2013 【发布时间】:2014-12-31 09:59:28 【问题描述】:

我正在尝试将我的下拉列表与我的数据库 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” 我的错误是什么以及如何解决这个问题!!! 谢谢你

【问题讨论】:

【参考方案1】:

您缺少检查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();



    

【讨论】:

@PanteleevDima 如果您认为这有帮助,请点赞并将其标记为答案【参考方案2】:

您缺少 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();

    

【讨论】:

以上是关于数据绑定 DropDownList 与来自 Ms access 2013 的 OleDbDataReader的主要内容,如果未能解决你的问题,请参考以下文章

Repeater中 DropDownList如何绑定数据

如何绑定 DropDownList 的选定值

DropDownList怎样与数据库中的数据绑定

在 KendoGrid 中重新绑定 DropDownList,取决于在同一行的其他 DropDownList 中选择的值

步步为营-94-GridView中的DropDownlist值得获取与绑定

asp.net怎样把数据库中字段的值绑定到dropdownlist上,