【发布时间】:2014-01-21 00:24:12
【问题描述】:
在 gridview 的编辑模板中,我有一个下拉列表,当单击每个 gridview 行的编辑按钮时,它将提供一个值列表。
<EditItemTemplate>
<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack=false OnLoad="DropDownList1_onload"
onselectedindexchanged="DropDownList1_SelectedIndexChanged">
</EditItemTemplate>
c#
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
DropDownList ddl = (DropDownList)sender;
GridViewRow row = (GridViewRow)ddl.Parent.Parent;
int idx = row.RowIndex;
DropDownList txtECustCode = (DropDownList)row.Cells[0].FindControl("DropDownList1");
string _text1 = txtECustCode.selectedvalue();
}
protected void DropDownList1_onload(object sender, EventArgs e)
{
SqlConnection cn = new System.Data.SqlClient.SqlConnection("Data Source=CHANGEME1;Initial Catalog=Reflection;Integrated Security=True");
SqlDataAdapter da = new SqlDataAdapter("select salary from employee", cn);
DataSet ds = new DataSet();
var ddl = (DropDownList)sender;
da.Fill(ds);
cn.Close();
ddl.DataSource = ds;
ddl.DataTextField = "salary";
ddl.DataValueField = "salary";
ddl.DataBind();
ddl.Items.Insert(0, new ListItem("--Select--", "0"));
}
所以当我单击编辑按钮时,onload 事件将被触发并列出数据库中的数据。当我选择下拉列表中的一项时,我需要访问下拉列表中的选定值。
但每当我在 selectedindexchanged 之前更改下拉菜单时,就会再次调用 onload 函数,从而刷新内容并将 selectedindex 返回为 0。
如何防止这种情况发生?
【问题讨论】:
-
没关系,误读你的代码。
-
SelectedIndexChanged事件是否在更新发生的同时触发,例如在选择期间? -
没有。当我选择项目并单击更新按钮时,将触发此事件。
-
我不太明白你的问题。这是在球场上吗:“如果下拉有焦点,我需要防止更新发生?”
-
每当我更改下拉菜单时,在“selectedindexchanged”之前再次调用“onload”函数,该函数依次刷新内容并将 selectedindex 返回为 0。所以即使我选择了第 4 个值,返回的值也会为 0,因为 onload 在调用 selectedindex 之前刷新控件。