我有下面的C#代碼可以工作,所以當我選擇國家下拉菜單時,會填充狀態下拉列表。級聯下拉控件
如果選擇狀態下拉菜單(comboBox2),我想要做的是將相應的國家(comboBox1)selectedIndex更改爲相應的國家/地區。
例如:選擇古吉拉特時,應在第一comboBox1顯示印度
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
namespace cascadingdropdownlist
{
public partial class Form1 : Form
{
SqlConnection con = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Database1.mdf;Integrated Security=True;User Instance=True");
DataRow dr;
public Form1()
{
InitializeComponent();
refreshdata();
}
public void refreshdata()
{
con.Open();
SqlCommand cmd = new SqlCommand("select * from tbl_country", con);
SqlDataAdapter sda = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
sda.Fill(dt);
con.Close();
dr = dt.NewRow();
dr.ItemArray = new object[] { 0, "--Select Country--" };
dt.Rows.InsertAt(dr, 0);
comboBox1.ValueMember = "countryid";
comboBox1.DisplayMember = "countryname";
comboBox1.DataSource = dt;
}
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
if (comboBox1.SelectedValue.ToString()!= null)
{
int countryid = Convert.ToInt32(comboBox1.SelectedValue.ToString());
refreshstate(countryid);
}
}
public void refreshstate(int countryid)
{
con.Open();
SqlCommand cmd = new SqlCommand("select * from tbl_state where countryid= @countryid", con);
cmd.Parameters.AddWithValue("countryid", countryid);
SqlDataAdapter sda = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
sda.Fill(dt);
con.Close();
dr = dt.NewRow();
dr.ItemArray = new object[] { 0, "--Select State--" };
dt.Rows.InsertAt(dr, 0);
comboBox2.ValueMember = "stateid";
comboBox2.DisplayMember = "statename";
comboBox2.DataSource = dt;
}
}
}
沒有國家的,國家不會根據你的代碼填充?那麼你如何選擇狀態,而不是選定的國家? – Krishna
@Krishna默認情況下,表單加載時的兩個下拉列表應顯示所有狀態和所有國家 – user580950
我沒有在表單加載中看到它,我只看到國家/地區數據加載,無論如何,您面臨的問題是什麼? – Krishna