问题描述
我想从Oracle数据库中将一个复选框列表的数据检索到另一个复选框列表,以便在asp.net中进行多重选择。 但不幸的是,调试时我再次得到了相同的ID。 请帮我在哪里我做错了。
我想要类似以下内容:“从表中选择d.depot_code,d.depot_description,其中d.depot位于(另一个复选框列表中的depot_code)” [[用逗号分隔的ID] 代码:
ddlregion绑定代码:
public void BindRegion()
{
OracleCommand Cmd = new OracleCommand("select * from regions",con);
Cmd.CommandType = CommandType.Text;
OracleDataAdapter da = new OracleDataAdapter();
DataSet ds = new DataSet();
da.SelectCommand = Cmd;
da.Fill(ds);
ddlregion.DataSource = ds;
ddlregion.DataTextField = "REGION_DESC";
ddlregion.DataValueField = "REGION_CODE";
ddlregion.DataBind();
}
protected void ddlregion_SelectedindexChanged(object sender,EventArgs e)
{
ddlDepot.Items.Clear();
ddlDepot.Items.Add(new ListItem("--Select Depot--",""));
for (int i = 0; i < ddlregion.Items.Count; i++)
{
if (ddlregion.Items[i].Selected == true)
{
string str = "select d.depot_code,d.depot_description from regions r,sub_regions sr,depots d where r.region_code = sr.region_code and sr.sub_region_code = d.sub_region_code and active = 'Y' and d.depot_code = " + ddlregion.SelectedItem.Value + "";
OracleCommand Cmd = new OracleCommand(str,con);
Cmd.CommandType = CommandType.Text;
OracleDataAdapter da = new OracleDataAdapter();
DataSet ds = new DataSet();
da.SelectCommand = Cmd;
da.Fill(ds);
ddlDepot.DataSource = ds;
ddlDepot.DataTextField = "DEPOT_DESCRIPTION";
ddlDepot.DataValueField = "DEPOT_CODE";
ddlDepot.DataBind();
}
}
}
谢谢
解决方法
再次查看您的代码,似乎不需要遍历区域下拉列表。在ddlRegion_indexchanged中,继续绑定ddlDepot下拉列表,并将其传递给ddlregion.SelectedValue。因此,您所需要的全部都在下面,更改Region时,ddlDepot将相应绑定,因为每次都将选定的值传递给它。
string str = "select d.depot_code,d.depot_description from regions r,sub_regions sr,depots d where r.region_code = sr.region_code and sr.sub_region_code = d.sub_region_code and active = 'Y' and d.depot_code = " + ddlregion.SelectedValue + "";
OracleCommand Cmd = new OracleCommand(str,con);
Cmd.CommandType = CommandType.Text;
OracleDataAdapter da = new OracleDataAdapter();
DataSet ds = new DataSet();
da.SelectCommand = Cmd;
da.Fill(ds);
ddlDepot.DataSource = ds;
ddlDepot.DataTextField = "DEPOT_DESCRIPTION";
ddlDepot.DataValueField = "DEPOT_CODE";
ddlDepot.DataBind();