Я использую три DropDownLists на странице. И я привязываю данные к DDL1 (DropDownList1) на pageload, используя условие (! Page.IsPostBack). И на DDL1 selectedIndexChanged Event Я привязываю данные к DDL2 и его работоспособность. Но когда я пытаюсь сделать то же самое с DDL3 & DDL2 (Как данные привязки к DDL2 при событии SelectedIndexChanged DDL2), всегда DDL2 выбирает первый элемент только в том случае, если я выбираю случайный случай, и DDL2 по-прежнему идет первым элементом. Здесь Все 3 DDLS являются AutoPostBack-правда, Vistate-Enabledasp.net cascading dropdownlists всегда выбирает первый элемент
Вот мой код:
ASPX - код ..
<form id="form1" runat="server">
<div>
<br />
<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged">
<asp:ListItem Value="0">Select</asp:ListItem>
</asp:DropDownList>
<br />
<br />
<asp:DropDownList ID="DropDownList2" runat="server" AutoPostBack="True" OnSelectedIndexChanged="DropDownList2_SelectedIndexChanged">
<asp:ListItem Value="0">Select</asp:ListItem>
</asp:DropDownList>
<br />
<br />
<asp:DropDownList ID="DropDownList3" runat="server" AutoPostBack="True">
<asp:ListItem Value="0">Select</asp:ListItem>
</asp:DropDownList>
<br />
</div>
</form>
.cs код ...
public partial class getcolumns : System.Web.UI.Page
{
private SqlConnection con;
private SqlDataAdapter da;
private DataTable dt;
private DataSet ds;
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
try
{
string query = " SELECT name, dbid FROM sys.sysdatabases where dbid > 4 order by name ";
con = new SqlConnection(ConfigurationManager.AppSettings["godb"].ToString());
da = new SqlDataAdapter(query, con);
dt = new DataTable();
ds = new DataSet();
da.Fill(dt);
DropDownList1.DataSource = dt.DefaultView.ToTable(true, "name", "dbid");
//DropDownList1.DataValueField = "dbid";
DropDownList1.DataTextField = "name";
DropDownList1.DataBind();
}
catch (Exception) { }
}
}
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
try
{
DropDownList2.Items.Clear();
string query = " SELECT TABLE_CATALOG, TABLE_NAME FROM " + DropDownList1.SelectedItem + ".INFORMATION_SCHEMA.tables ";
con = new SqlConnection(ConfigurationManager.AppSettings["godb"].ToString());
da = new SqlDataAdapter(query, con);
dt = new DataTable();
ds = new DataSet();
da.Fill(ds);
DropDownList2.DataSource = ds; // dt.DefaultView.ToTable(true, "TABLE_NAME", "TABLE_CATALOG");
//DropDownList2.DataValueField = "TABLE_CATALOG";
DropDownList2.DataTextField = "TABLE_NAME";
DropDownList2.DataBind();
DropDownList2.Items.Insert(0, new ListItem("--Select--", "0"));
}
catch { }
}
protected void DropDownList2_SelectedIndexChanged(object sender, EventArgs e)
{
try
{
DropDownList3.Items.Clear();
string query = " SELECT TABLE_NAME, COLUMN_NAME FROM " + DropDownList1.SelectedItem + ".INFORMATION_SCHEMA.columns where TABLE_NAME = '" + DropDownList2.SelectedItem + "' ";
con = new SqlConnection(ConfigurationManager.AppSettings["godb"].ToString());
da = new SqlDataAdapter(query, con);
dt = new DataTable();
da.Fill(dt);
DropDownList3.DataSource = dt.DefaultView.ToTable(true, "TABLE_NAME", "COLUMN_NAME");
//DropDownList3.DataValueField = "TABLE_NAME";
DropDownList3.DataTextField = "COLUMN_NAME";
DropDownList3.DataBind();
}
catch (Exception) { }
}
}
Edit: - Он работал хорошо, когда я Игнорируйте «DataValueField» из DDL, Спасибо Все для вашей поддержки ...
попробуйте поместить свои выпадающие списки в 'UpdatePanel' –
Привет, благодарю за ваш комментарий. Я уже пробовал с updatePanel, но и тот же результат –
Проверяют мой последний ответ –