gpt4 book ai didi

c# - SelectedIndex 在下拉列表中始终为 0(asp.net c#)

转载 作者:行者123 更新时间:2023-11-30 19:37:59 25 4
gpt4 key购买 nike

我正在从下拉列表 ddlTechnology 中的表 Technology 中检索数据。

我将 TechnologyId 作为表中的主键,值是 1,2,3,4

现在根据技术,我必须在题库中添加问题。但是当我选择下拉列表中的任何项目时,我的 SelectedIndex 始终为 0。

我想要下拉列表中的 TechnologyId

我试过下面的代码,但它不起作用

using (dbDataContext dt = new dbDataContext())
{
var qry = from i in dt.Technologies
select i;

ddlTechnology.DataSource = qry;
ddlTechnology.DataValueField = "TechnologyId";
ddlTechnology.DataTextField = "TechnologyName";
ddlTechnology.DataBind();
ddlTechnology.Items.Insert(0, new ListItem("Select Technology", ""));
}

添加按钮根据选择的技术添加问题。

protected void btnAdd_Click(object sender, EventArgs e)
{
using (dbDataContext dt = new dbDataContext())
{
Question objQtn = new Question();
objQtn.Question1 = txtQuestion.Text;
objQtn.Option1 = txtOption1.Text;
objQtn.Option2 = txtOption2.Text;
objQtn.Option3 = txtOption3.Text;
objQtn.Answer = txtAnswer.Text;
// below here selectedIndex is always zero..
objQtn.TechnologyId = ddlTechnology.SelectedIndex;
dt.Questions.InsertOnSubmit(objQtn);
dt.SubmitChanges();
txtAnswer.Text = "";
txtOption1.Text = "";
txtOption2.Text = "";
txtOption3.Text = "";
txtQuestion.Text = "";
}
}

最佳答案

原因 1:

似乎您在每次回发时都绑定(bind)了下拉列表。如果这是一个问题,那么请将您的加载代码保存在 !IsPostBack 中。

if(!IsPostBack)
{
using (dbDataContext dt = new dbDataContext())
{
var qry = from i in dt.Technologies
select i;

ddlTechnology.DataSource = qry;
ddlTechnology.DataValueField = "TechnologyId";
ddlTechnology.DataTextField = "TechnologyName";
ddlTechnology.DataBind();
ddlTechnology.Items.Insert(0, new ListItem("Select Technology", ""));
}
}

原因 2:

在某些情况下,如果程序员禁用任何控件/页面的 ViewState 属性,那么控件也会在回发时失去它的值。

关于c# - SelectedIndex 在下拉列表中始终为 0(asp.net c#),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35769178/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com