【问题标题】:C#/ASP.NET gridview databind dropdownlist index changedC#/ASP.NET gridview 数据绑定下拉列表索引已更改
【发布时间】:2020-12-12 12:36:34
【问题描述】:

我是 .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();
        }

【问题讨论】:

  • 确认参数值被正确地传递到sql并且它的值是正确的。还要检查 ddDepartments.SelectedItem.Value 不应该是 ddDepartments.SelectedValue

标签: c# asp.net .net asp.net-core asp.net-web-api


【解决方案1】:

您需要使用 Session 变量将 gridView 数据源持久化到由下拉列表发送的 Postback 上。

那么紧接着:

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

请看我的回答@:

Asp.net Web Forms GridView Dynamic Column Issue

【讨论】:

  • 我按照你说的实现了,但是gridview仍然没有绑定下拉列表值。
  • 您是否在 ddDepartments_SelectedIndexChanged 中设置了一个调试点以查看它是否被调用,然后单步执行每一行并快速查看并查看它们的值是多少?另外,您是否确保 ddDepartments AutoPostback 属性为 True?显示您的 HTML 标记。
  • 谢谢贾马尔。不需要设置会话变量。但是,将 AutoPostback 属性设置为 True 有效。
猜你喜欢
  • 2015-08-15
  • 2012-02-09
  • 1970-01-01
  • 1970-01-01
  • 2011-10-27
  • 2011-04-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多