简体   繁体   English

C#/ASP.NET gridview 数据绑定下拉列表索引已更改

[英]C#/ASP.NET gridview databind dropdownlist index changed

I am new to .net world and I could not figure out why the below code does not work.我是 .net 世界的新手,我无法弄清楚为什么下面的代码不起作用。 I have a dropdownlist populated with DEPARTMENT_NAME and value as DEPARTMENT_ID.我有一个用 DEPARTMENT_NAME 和值作为 DEPARTMENT_ID 填充的下拉列表。 I have a gridview which populates the employees data based on department_id selected from dropdown list.我有一个gridview,它根据从下拉列表中选择的department_id 填充员工数据。 I have written the following code but the gridview is not populating.我已经编写了以下代码,但 gridview 没有填充。 Can someone please help what I am doing wrong here.有人可以帮助我在这里做错什么。

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

You need to use a Session variable to persist the gridView datasource on Postback which is sent by the dropdownlist.您需要使用 Session 变量将 gridView 数据源保存在由下拉列表发送的 Postback 上。

So right after:所以就在之后:

gvEmployees.DataSource = dtEmployees;
gvEmployees.DataBind();

Add:添加:

Session("gvDS") = gvEmployees.DataSource;

In the page Load() method:在页面 Load() 方法中:

if (Session["gvDS"] != null && IsPostBack)
{
    gvEmployees.DataSource = Session["gvDS"];
    gvEmployees.DataBind();
}
else
    BindGridView();  // you initial gvEmployees binding method

Please see my answer @:请看我的回答@:

Asp.net Web Forms GridView Dynamic Column Issue Asp.net Web Forms GridView 动态列问题

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 使用C#在asp.net中更改下拉列表选择的索引 - dropdownlist selected index changed in asp.net using C# Asp.net Dropdownlist选定的索引已更改且TextChanged事件未触发? (C#) - Asp.net Dropdownlist selected index changed AND TextChanged Events not Fire? (C#) 如何在ASP.Net C#中的GridView的EditMode中显示DropdownList? - How to show DropdownList in EditMode of GridView in ASP.Net C#? C#-ASP.NET-GridView中的DropDownList-SelectedValue错误 - C# - ASP.NET - DropDownList in GridView - SelectedValue error C#Asp.Net使用DropDownList更改GridView的数据源 - C# Asp.Net changing DataSource for GridView using DropDownList DropDownList在gridview asp.net C#中的第二次尝试时刷新 - DropDownList refresh on second attempt in gridview asp.net c# ASP.net C#在自定义DataBind之后命名gridview列 - ASP.net C# Name gridview columns after custom DataBind GridView中的DropDownList绑定到ASP.NET C#中GridView内TextBox中DropDown的选定值 - DropDownList in a GridView to bind the selected value of DropDown in TextBox inside a GridView in asp.net c# Gridview带有来自数据库的下拉列表,并在gridview外部添加,编辑删除按钮? ASP.NET C# - Gridview with dropdownlist from the database and outside add,edit delete buttons outside the gridview ? ASP.NET C# ASP.NET C#GridView Tab索引问题 - ASP.NET C# GridView Tab Index issue
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM