[英]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.