我正在使用2下拉列表。国家排名第一,州排名第二。如果我从1英尺下拉列表中选择印度,第二个将自动从数据库中自动绑定印度的所有州。
我已将country_tbl
用于国家/地区,并使用第一个下拉列表和india_tbl
,us_tbl
,sri_tbl
绑定有关这些国家/地区的绑定状态。
请帮帮我。我该怎么办?
我的代码如下:
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
method1();
}
}
protected void method1()
{
string s1 = "data source=ALOK-PC\\SQLEXPRESS;database=MySite;integrated security=true";
SqlConnection con = new SqlConnection(s1);
string s2 = "select * from country";
SqlCommand cmd = new SqlCommand(s2, con);
con.Open();
SqlDataReader dr = cmd.ExecuteReader();
DropDownList1.DataTextField = "name";
DropDownList1.DataValueField = "name";
DropDownList1.DataSource = dr;
DropDownList1.DataBind();
con.Close();
dr.Close();
}
protected void methodInd()
{
string s1 = "data source=ALOK-PC\\SQLEXPRESS;database=MySite;integrated security=true";
SqlConnection con = new SqlConnection(s1);
string s2 = "select * from india";
SqlCommand cmd = new SqlCommand(s2, con);
con.Open();
SqlDataReader dr = cmd.ExecuteReader();
DropDownList2.DataTextField = "name";
DropDownList2.DataValueField = "name";
DropDownList2.DataSource = dr;
DropDownList2.DataBind();
con.Close();
dr.Close();
}
protected void methodpak()
{
string s1 = "data source=ALOK-PC\\SQLEXPRESS;database=MySite;integrated security=true";
SqlConnection con = new SqlConnection(s1);
string s2 = "select * from pakistan";
SqlCommand cmd = new SqlCommand(s2, con);
con.Open();
SqlDataReader dr = cmd.ExecuteReader();
DropDownList2.DataTextField = "name";
DropDownList2.DataValueField = "name";
DropDownList2.DataSource = dr;
DropDownList2.DataBind();
con.Close();
dr.Close();
}
protected void methodsri()
{
string s1 = "data source=ALOK-PC\\SQLEXPRESS;database=MySite;integrated security=true";
SqlConnection con = new SqlConnection(s1);
string s2 = "select * from srilanka";
SqlCommand cmd = new SqlCommand(s2, con);
con.Open();
SqlDataReader dr = cmd.ExecuteReader();
DropDownList2.DataTextField = "name";
DropDownList2.DataValueField = "name";
DropDownList2.DataSource = dr;
DropDownList2.DataBind();
con.Close();
dr.Close();
}
protected void submit_Click(object sender, EventArgs e)
{
}
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
if (DropDownList1.SelectedItem.Text=="india")
{
methodInd();
}
else if (DropDownList1.SelectedItem.Text=="pakistan")
{
methodpak();
}
else if (DropDownList1.SelectedItem.Text=="srilanka")
{
methodsri();
}
}
答案 0 :(得分:1)
您的方法是错误的,您不应该为每个国家/地区的状态设置单独的表,以便您可以有一个查询和一个方法绑定到您的州列表
将架构更改为
CREATE TABLE Country
(
id int,
country_name,
primary key(id)
)
Country_State
(
id int,
state_name,
country_id,
primary key(id)
)
country_id是链接回国家/地区的外键
country
------------------------
id Name
------------------------
1 India
2 Pakistan
country_state
-----------------------------------
id Name country_id
------------------------------------
1 Delhi 1
2 Bangladesh 1
3 Some Indians 1
4 S1_Pakistan 2
5 S2_Pakistan 2
您的疑问
Select Id, Name from Country
Select Id, Name From country_states Where country_id = @id
只调用一种方法来绑定所有状态
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
string country_id = DropDownList1.SelectedValue;
BindStatesByCountry(country_id);
}
protected void methodsri(string countryId) //change this to BindStatesByCountry
{
string s1 = "data source=ALOK-PC\\SQLEXPRESS;database=MySite;integrated security=true";
SqlConnection con = new SqlConnection(s1);
con.Open();
string s2 = "select * from country_states where country_id=@countryId";
SqlCommand cmd = new SqlCommand(s2, con);
cmd.Parameters.AddWithValue("@countryId", countryId);
SqlDataReader dr = cmd.ExecuteReader();
DropDownList2.DataTextField = "name";
DropDownList2.DataValueField = "name";
DropDownList2.DataSource = dr;
DropDownList2.DataBind();
con.Close();
dr.Close();
}
希望这有帮助
答案 1 :(得分:0)
您想要实现主详细信息模式,请参阅此网址: http://msdn.microsoft.com/en-us/library/aa581789.aspx 首选存储过程而不是sql注入 最好的关注