如何解决C#/ ASP.NET gridview数据绑定下拉列表索引已更改
我是.net世界的新手,所以我无法弄清楚下面的代码为什么不起作用。我有一个下拉列表,其中填充了DEPARTMENT_NAME,其值为DEPARTMENT_ID。我有一个gridview,它根据从下拉列表中选择的department_id填充员工数据。我已经编写了以下代码,但是gridview没有填充。有人可以帮我在这里做错什么吗。
protected void ddDepartments_SelectedIndexChanged(object sender,EventArgs e)
{
string connStr = ConfigurationManager.ConnectionStrings["myCon"].ConnectionString;
OracleConnection oConn = new OracleConnection(connStr);
oConn.Open();
string SqlText = "Select * from employees where department_id = :department_id";
OracleCommand cmd = new OracleCommand(SqlText,oConn);
cmd.CommandType = CommandType.Text;
OracleParameter p_department_id = new OracleParameter();
p_department_id.OracleDbType = OracleDbType.Varchar2;
p_department_id.Value = ddDepartments.SelectedItem.Value;
cmd.Parameters.Add(p_department_id);
OracleDataAdapter adapter = new OracleDataAdapter(cmd);
DataTable dtEmployees = new DataTable();
adapter.Fill(dtEmployees);
gvEmployees.DataSource = dtEmployees;
gvEmployees.DataBind();
dtEmployees.Dispose();
adapter.Dispose();
cmd.Dispose();
oConn.Close();
oConn.Dispose();
}
解决方法
您需要使用Session变量在下拉列表发送的Postback上保留gridView数据源。
紧随其后:
gvEmployees.DataSource = dtEmployees;
gvEmployees.DataBind();
添加:
Session("gvDS") = gvEmployees.DataSource;
在页面Load()方法中:
if (Session["gvDS"] != null && IsPostBack)
{
gvEmployees.DataSource = Session["gvDS"];
gvEmployees.DataBind();
}
else
BindGridView(); // you initial gvEmployees binding method
请在@看到我的答案
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。