dropdownlist的OnSelectedIndexChanged怎么做

drpLev1.DataSource=SW.BS.Facade.FTrainInfo.GetParentNode();drpLev1.DataTextField="Tra... drpLev1.DataSource = SW.BS.Facade.FTrainInfo.GetParentNode();
drpLev1.DataTextField = "TrainTypeName";
drpLev1.DataValueField = "ID";
drpLev1.DataBind();

int pid = Convert.ToInt32(drpLev1.DataValueField);
drpLev2.DataSource = SW.BS.Facade.FTrainInfo.GetSonNode(pid);
drpLev2.DataTextField = "TrainTypeName";
drpLev2.DataValueField = "ID";
drpLev2.DataBind();

怎样再将这两个关联起来???

OnSelectedIndexChanged在后台怎么写???
展开
 我来答
allen76615519
推荐于2016-02-14 · 超过80用户采纳过TA的回答
知道小有建树答主
回答量:234
采纳率:0%
帮助的人:165万
展开全部
明白你的意思了。

你在设计视图点击drpLev1这个控件,然后按F4键,在右侧的属性栏里点击事件(雷)按钮,然后找到OnSelectedIndexChanged 事件,,双击,这时后台就会生成一个它的事件,然后你把下面的代码贴进去
int pid = Convert.ToInt32(drpLev1.DataValueField);
drpLev2.DataSource = SW.BS.Facade.FTrainInfo.GetSonNode(pid);
drpLev2.DataTextField = "TrainTypeName";
drpLev2.DataValueField = "ID";
drpLev2.DataBind();

不过我感觉下面这句可能有问题,你应该改成int pid = Convert.ToInt32(drpLev1.SelecedValue)
int pid = Convert.ToInt32(drpLev1.DataValueField);

另外,drpLev1控件,你还要设置一个属性 AutoPostBack=true
不想起名字了2333
2011-12-01 · TA获得超过2447个赞
知道大有可为答主
回答量:1931
采纳率:50%
帮助的人:1847万
展开全部
你的代码:
drpLev1.DataSource = SW.BS.Facade.FTrainInfo.GetParentNode();
drpLev1.DataTextField = "TrainTypeName";
drpLev1.DataValueField = "ID";
drpLev1.DataBind();
protected void drpLev1_SelectedIndexChanged(object sender, EventArgs e)
{
drpLev2.Items.Clear();
int pid = Convert.ToInt32(drpLev1.SelectedValue);
//这里是SelectedValue属性 ,不是DataValueField 字段
drpLev2.DataSource = SW.BS.Facade.FTrainInfo.GetSonNode(pid);
drpLev2.DataTextField = "TrainTypeName";
drpLev2.DataValueField = "ID";
drpLev2.DataBind();
}

先看看我的例子:
前台:
<asp:DropDownList ID="DDL1" runat="server" AutoPostBack="True" OnSelectedIndexChanged="DDL1_SelectedIndexChanged">
</asp:DropDownList>
<asp:DropDownList ID="DDL2" runat="server" AutoPostBack="True" ">
</asp:DropDownList>

后台代码:
private void DataBindDDL1() //绑定DDL1的数据
{
string strSql = "select sname, childID from T1";
DataSet ds = SqlDBOperate.TheOnly.GetDataSet(strSql, "T1");
DDL1.DataSource = ds.Tables["T1"];
DDL1.DataTextField = "sname";
DDL1.DataValueField = "childID";
DDL1.DataBind();
}

private void DataBindDDL2() //绑定DDL2的数据
{
string strSql = string.Format("select childID , sname from T2 WHERE ID IN ( SELECT childID from T1 WHERE childID = '{0}')", DDL1.SelectedValue);
DataSet ds = SqlDBOperate.TheOnly.GetDataSet(strSql, "T2");
DDL2.DataSource = ds.Tables["T2"];
DDL2.DataTextField = "sname";
DDL2.DataValueField = "childID";
DDL2.DataBind();
}

//在DDL1的SelectedIndexChanged()事件里面写绑定DDL2的数据
protected void DDL1_SelectedIndexChanged(object sender, EventArgs e)
{
DDL2.Items.Clear();
DataBindDDL2();
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友6d837d0
2011-12-01 · TA获得超过979个赞
知道小有建树答主
回答量:644
采纳率:0%
帮助的人:482万
展开全部
直接把drplev2的绑定过程放到里面去
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式