.net dropdownlist onselectedIndexChanged问题
我在我的asp页面中放置了一个下拉列表.net dropdownlist onselectedIndexChanged问题,.net,.net,我在我的asp页面中放置了一个下拉列表 <asp:DropDownList ID="authorList" runat="server" OnSelectedIndexChanged="authorList_Changed" AutoPostBack="true" ></asp:DropDownList> 然后在codebehind中,我将它绑定到数据库中的一个字段,然后激发selectedindexchanged protected vo
<asp:DropDownList ID="authorList" runat="server"
OnSelectedIndexChanged="authorList_Changed" AutoPostBack="true"
></asp:DropDownList>
然后在codebehind中,我将它绑定到数据库中的一个字段,然后激发selectedindexchanged
protected void Page_Load(object sender, EventArgs e)
{
var a = (from s in p.Authors
select s.FirstName);
authorList.DataSource = p.Authors;
authorList.DataTextField = "Firstname";
authorList.DataValueField = "FirstName";
authorList.DataBind();
authorList.SelectedIndexChanged += new EventHandler(authorList_Changed);
var q = (from s in p.Authors
where s.FirstName.Contains("m")
select s);
Grid1.DataSource = q;
Grid1.DataBind();
// authorList.DisplayMember = "FirstName";
}
public void authorList_Changed(Object sender, EventArgs e)
{
//Author a = (Author) authorList.SelectedItem;
var a = authorList.SelectedValue;
var v = authorList.SelectedItem;
var q2 = (from s in p.Authors
from w in p.Payrolls
where authorList.SelectedValue == s.FirstName
where s.AuthorID == w.AuthorID
select w);
List<Payroll> d = q2.ToList();
if (d.Count > 0)
{
payroltextbox.Text = d.First().PayrollID.ToString();
//authorList.DataBind();
}
else
payroltextbox.Text = "";
// authorList.DataBind();
}
PublishingCompanyEntities p = new PublishingCompanyEntities();
受保护的无效页面加载(对象发送方,事件参数e)
{
var a=(来自p.作者中的s)
选择s.FirstName);
authorList.DataSource=p.Authors;
authorList.DataTextField=“Firstname”;
authorList.DataValueField=“FirstName”;
authorList.DataBind();
authorList.SelectedIndexChanged+=新事件处理程序(authorList\u已更改);
var q=(来自p.作者中的s)
其中s.FirstName.包含(“m”)
选择s);
Grid1.DataSource=q;
Grid1.DataBind();
//authorList.DisplayMember=“FirstName”;
}
public void authorList_已更改(对象发送方,事件参数e)
{
//Author a=(Author)authorList.SelectedItem;
var a=authorList.SelectedValue;
var v=authorList.SelectedItem;
var q2=(来自p.作者中的s
从w到p.工资单
其中authorList.SelectedValue==s.FirstName
其中s.AuthorID==w.AuthorID
选择w);
列表d=q2.ToList();
如果(d.计数>0)
{
payroltextbox.Text=d.First().PayrollID.ToString();
//authorList.DataBind();
}
其他的
payroltextbox.Text=”“;
//authorList.DataBind();
}
出版公司实体p=新出版公司实体();
但问题是,当我的下拉列表有值时,比如说1234。。。。。。。1.违约。。。。。。。因此,当我选择4时,它仍然在回发时返回1,并在文本框(payroltextbox)中返回与1关联的值。。你能帮帮我吗…这是因为你忘了检查页面。我在页面加载中返回 每次加载页面时都会发生页面加载,即使是在回发中,因此在authorList\u change事件之前会重新填充第一个下拉列表。这将导致重新选择第一个项目 请参阅 并将数据绑定代码放入页面加载中的if语句中,如下所示:
protected void Page_Load(object sender, EventArgs e)
{
if(!Page.IsPostback)
{
var a = (from s in p.Authors
select s.FirstName);
authorList.DataSource = p.Authors;
authorList.DataTextField = "Firstname";
authorList.DataValueField = "FirstName";
authorList.DataBind();
authorList.SelectedIndexChanged += new EventHandler(authorList_Changed);
var q = (from s in p.Authors
where s.FirstName.Contains("m")
select s);
Grid1.DataSource = q;
Grid1.DataBind();
// authorList.DisplayMember = "FirstName";
}
}