我无法使用特定表数据库中的值填充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"));
}
}
答案 0 :(得分:1)
请试试这个:
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();
}
答案 1 :(得分:0)
问题在于以下行:
ddlTesting.Items.FindByValue("Testing").Selected = true;
您必须使用数据表值中存在的某些值,而不是在硬代码中使用列名"Testing"
。
这样,上面的代码执行时没有错误,数据绑定没有变化。