我正在获取数据库值并在下拉列表中显示它们。我有国家和州的下拉列表:
DropDownList1.Items.Add(new ListItem(Session["country"].ToString()));
DropDownList2.Items.Add(new ListItem(Session["state"].ToString()));
我无法在DDL中显示DB值。我正在 - 选择一个州 - 在状态下拉列表中如何在下拉列表中显示数据库值?
<asp:DropDownList ID="DropDownList2" runat="server" AutoPostBack="True">
<asp:ListItem Value="Select a state" >Select a state</asp:ListItem>
<asp:ListItem Value="value 1" >Maharastra</asp:ListItem>
<asp:ListItem Value="value 2" >Goa</asp:ListItem>
<asp:ListItem Value="value 3" >Kashmir</asp:ListItem>
</asp:DropDownList>
我在这里跟踪数据库值并将它们发送到下一页
if (dt.Rows.Count > 0)
{
DataTable dt1 = new DataTable();
dt1 = bll.getnewid(TextBox1.Text);
if (dt1.Rows.Count > 0)
{
Session["country"] = dt1.Rows[0]["Country"].ToString();
Session["state"] = dt1.Rows[0]["State"].ToString();
答案 0 :(得分:4)
好吧,你必须以某种方式将你的ddlist绑定到db结果。看起来像这样:
ddlist1.DataSource = MyDBAccessClass.GetSomeValues();
ddlist1.DataBind();
基于更多评论...我将不得不玩一个小轮盘赌,猜猜你的意图是什么。你的代码有很多问题,你显然有些问题需要解释自己。
如果我理解正确,您有2个下拉列表。您希望使用国家/地区填充一个,并根据选择,填充第二个下拉列表。
基本原则如下:
DataAccessClass.cs
public class DataAccessClass
{
public static IEnumerable<string> GetCountries()
{
// access the database and retrieve all the values
// returns IEnumerable (a list of items)
}
public static IEnumerable<string> GetStates(string selectedCountry)
{
// access the database and retrieve all the corresponding states
// linq2sql: var states = from o in db.States
// where o.country = selectedCountry
// select o;
// returns IEnumerable (a list of items)
}
}
YourPage.aspx
<asp:DropDownList id="ddlistCountries" runat="server" AutoPostBack="True" /><br />
<asp:DropDownList id="ddlistStates" runat="server" />
YourPage.aspx.cs
public partial class YourPage
{
protected void Page_Init(object sender, EventArgs e)
{
ddlistCountries.SelectedIndexChanged += new EventHandler(ddlist_SelectedIndexChanged);
}
protected void Page_Load(object sender, EventArgs e)
{
if (!isPostBack)
{
PopulateCountries();
ddlistStates.Enabled = false; // no country selected yet!
}
}
protected void PopulateCountries()
{
ddlistCountries = DataAccessClass.GetCountries();
ddlistCountries.DataBind();
ddlist.Items.Insert(0, "Select a country");
}
void ddlist_SelectedIndexChanged(object sender, EventArgs e)
{
if (ddlistCountries.SelectedIndex != 0)
{
ddlistStates.DataSource = DataAccessClass.GetStates(ddlistCountries.SelectedValue);
ddlistStates.DataBind();
ddlistStates.Enabled = true;
}
else
{
ddlistStates.Items.Clear();
ddlistStates.Enabled = false;
}
}
}
如果你无法理解这一点,要么回到基础,要么完全忘记编程。
答案 1 :(得分:3)
DropDownList2.DataSource = {your data source};
DropDownList2.DataTextField = "text column name";
DropDownList2.DataValueField = "data column name of id";
DropDownList2.DataBind();
您需要将数据源设置为DDL,然后设置要显示的值,然后绑定它。
答案 2 :(得分:0)
我建议使用这样的下拉列表:
ddl.DataSource = YourDBSource.Get();
ddl.DataBind();
然后您可以通过以下方式决定要显示的内容:
ddl.DataTextField = ...;
or
ddl.DataValueField = ...;
首先,没有理由在.aspx页面中构建listItem,因为您将以编程方式填充ddl。
其次,我不知道你的意思是'我在这里将数据库值复制并发送到下一页'。只需在您的数据库上使用适当的查询填充dataSource即可。
如果你想要更简单的过滤/ wahtever,尝试使用Linq2SQL。
此外,您需要在* Page_Load()*中执行此数据绑定,如下所示:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
ddlErreur.DataSource = ...;
ddlErreur.DataTextField = ...;
ddlErreur.DataBind();
}
}