web-dev-qa-db-ja.com

ドロップダウンリストをデータバインド

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();
7
Will_G
string strQuery = "Select Item FROM Calendar Where UserD='Test'";

コードでは最初の文字列を終了しなかったため、文字列を一重引用符で囲む必要があることに注意してください。コードの残りの部分はstrQueryの一部になりました。

さらに将来複数のフィールドを戻す場合、ドロップダウンリストをバインドするときに、データベースのどのフィールドが値で、どれが表示されるテキストであるかを指定する必要があります。

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

値とテキストとして使用するフィールドを指定する必要があります。

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

また、selectステートメントに「」がありません。次のようになります。

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

例:

ライアンが指摘したように、1つのフィールドを引き戻す場合は、次のことができます。

        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();
2
Stephen

この行を追加する

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

次に、接続文字列を見逃します

_SqlConnection myConn="must add your connection string code here "
_

接続文字列を開いていないので

myconn.open()を追加します

for

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

これを試して..

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

ddList.Value="somefield"の追加はオプションです

0
SamuraiJack