【问题标题】:Databind a dropdownlist数据绑定下拉列表
【发布时间】:2013-03-08 11:17:24
【问题描述】:

当我尝试对 dropdownlist 进行数据处理时,得到了这个:system.data.datarowview
我错了什么?

 string strQuery = "Select Item FROM Calendar Where UserD="Test";
 SqlConnection myConn;
 SqlDataAdapter sqlDa = new SqlDataAdapter(strQuery,myConn);
 DataTable sqlTa = new DataTable("Test");
 da.Fill(sqlTa);
 ddlList.DataSource = sqlTa;
 ddlList.DataBind();

【问题讨论】:

  • 你在哪里绑定你的下拉列表?这是在 page_load 中吗?

标签: c# asp.net database data-binding


【解决方案1】:
string strQuery = "Select Item FROM Calendar Where UserD='Test'";

请注意,您需要在字符串周围使用单引号,因为在您的代码中您从未完成初始字符串,因此其余代码只是成为 strQuery 的一部分。

另外如果以后带回多个字段,在绑定下拉列表时需要指定数据库中哪个字段是值,哪个是显示的文本。

ddlList.DataSource = sqlTa;
ddlList.DataValueField = "ValueFieldFromDatabaseResults";
ddlList.DataTextField = "ShownTextFieldFromDatabaseResults";
ddlList.DataBind();

【讨论】:

    【解决方案2】:

    您需要告诉它使用哪些字段作为值和文本。

    ddlList.DataSource = sqlTa;
    ddlList.DataValueField = "ValueField";
    ddlList.DataTextField = "TextField";
    ddlList.DataBind();
    

    你的选择语句缺少一个“。应该是:

    "Select Item FROM Calendar Where UserD='Test'"
    

    一个例子是:

    正如 ryan 指出的那样,如果您要撤回一个领域,那么您可以这样做:

            DataTable dtTable = new DataTable();
    
            try
            {
                using (SqlConnection sqlConnection = new SqlConnection("Your connection"))
                {
                    using (SqlCommand sqlCommand = new SqlCommand("Select Item FROM Calendar Where UserD='Test'", sqlConnection))
                    {
                        sqlConnection.Open();
    
                        using (SqlDataReader sqlDataReader = sqlCommand.ExecuteReader())
                        {
                            dtTable.Load(sqlDataReader);
                            sqlDataReader.Close();
                        }
                    }
                }
            }
            catch (Exception error)
            {
                throw error;
            }
    
            ddlList.DataSource = dtTable;
            ddlList.DataBind();
    

    但如果你有多个字段,那么你可以这样做:

            DataTable dtTable = new DataTable();
    
            try
            {
                using (SqlConnection sqlConnection = new SqlConnection("Your connection"))
                {
                    using (SqlCommand sqlCommand = new SqlCommand("Select Item, id FROM Calendar Where UserD='Test'", sqlConnection))
                    {
                        sqlConnection.Open();
    
                        using (SqlDataReader sqlDataReader = sqlCommand.ExecuteReader())
                        {
                            dtTable.Load(sqlDataReader);
                            sqlDataReader.Close();
                        }
                    }
                }
            }
            catch (Exception error)
            {
                throw error;
            }
    
            ddlList.DataSource = dtTable;
            ddlList.DataValueField = "id";
            ddlList.DataTextField = "item";
            ddlList.DataBind();
    

    【讨论】:

    • 你能举个例子吗?
    • @Stephen 因为他只从数据库中带回一个字段,您不需要指定值或文本字段。
    【解决方案3】:

    添加此行方式

    ddlList.DataSource = sqlTa;
    ddlList.DataValueField = "ValueFieldFromDatabaseResults";
    ddlList.DataTextField = "ShownTextFieldFromDatabaseResults";
    ddlList.DataBind();
    

    然后你错过了连接字符串

    SqlConnection myConn="must add your connection string code here "
    

    你还没有打开连接字符串所以

    添加myconn.open()

     SqlConnection myConn="must add your connection string code here "
    `myconn.open()`
     SqlDataAdapter sqlDa = new SqlDataAdapter(strQuery,myConn)
    

    【讨论】:

      【解决方案4】:

      试试这个..

       ddlList.DataSource = sqlTa;                 
       ddlList.DataTextField = "class";
       ddlList.DataBind();
      

      添加ddList.Value="somefield" 是可选的

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-05-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-06
        • 2023-03-13
        相关资源
        最近更新 更多