簡體   English   中英

使用特定表數據庫中的值在c#中填充DropDownList

[英]Populate the DropDownList in c# with value from a specific table Database

我無法使用特定表Database中的值填充c#中的DropDownList

在此示例中,數據庫中testing的行值為NULL。

我嘗試了此代碼,但沒有成功。

該如何解決呢?

你能幫助我嗎?

預先感謝您的任何幫助,非常感謝。

我的代碼如下。

ASPX

<asp:DropDownList ID="ddlTesting" runat="server">
    <asp:ListItem Text="Yes" Value="Y"></asp:ListItem>
    <asp:ListItem Text="No" Value="N"></asp:ListItem>
</asp:DropDownList>

CS

    ddlTesting.AppendDataBoundItems = true;

    string sql = String.Format(@"SELECT ");
    sql += String.Format("  Testing ");
    sql += String.Format(" FROM ");
    sql += String.Format("  `tbl_testing` ");
    sql += String.Format("  WHERE Id IN (?); ");

    using (OdbcConnection cn =
       new OdbcConnection(ConfigurationManager.ConnectionStrings["Con"].ConnectionString))
    {
        using (OdbcCommand command =
                new OdbcCommand(sql, cn))
        {
            try
            {
                command.Parameters.AddWithValue("param1", Base64ForUrlDecode(Request.QueryString["sId"].ToString()));
                command.CommandType = CommandType.Text;
                command.Connection.Open();

                DataSet ds = new DataSet();
                OdbcDataAdapter da = new OdbcDataAdapter(command);
                da.Fill(ds);  

                ddlTesting.DataTextField = ds.Tables[0].Columns["Testing"].ToString(); 
                ddlTesting.DataValueField = ds.Tables[0].Columns["Testing"].ToString();   
                ddlTesting.DataSource = ds.Tables[0];
                ddlTesting.DataBind();

                Response.Write(ddlTesting.Items.Count);

                if (ddlTesting.Items.Count > 1)
                {
                    ddlTesting.Items.FindByValue("Testing").Selected = true;

                }
                else
                {
                    ddlTesting.SelectedValue = null;
                }

            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                command.Connection.Close();
            }

            ddlTesting.Items.Insert(0, new ListItem("[Y/N]", ""));
            ddlTesting.Items.Insert(1, new ListItem("[------------------]", "-99"));
        }            
    }

請嘗試一下:

    OleDbConnection conn = 
       new OleDbConnection(ConfigurationManager.ConnectionStrings["Con"].ConnectionString);

    try
    {
        conn.Open();
        var cmd = new OleDbCommand("SELECT 
                                    IFNULL(Testing,'[Y/N]') AS Testing
                                    FROM tbl_Testing
                                    WHERE ID = @param1", conn);

        cmd.Parameters.AddWithValue("param1", Request.QueryString["sId"].ToString());

        using (OleDbDataReader reader = cmd.ExecuteReader())
        {
            if (reader.HasRows)
            {
                reader.Read();
                string result = reader.GetString(0);
                ddlTesting.SelectedValue = result;
                ddlTesting.AppendDataBoundItems = true;
            }
        }
    }
    finally
    {
        conn.Close();
    }

問題在於下面的行:

ddlTesting.Items.FindByValue("Testing").Selected = true;

不必使用硬代碼中的"Testing"列名,而必須使用數據表值中存在的某些值。

這樣,您的上述代碼將在沒有任何錯誤且數據綁定沒有更改的情況下執行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM