[已解决]使用datatable和viewstate在下拉列表和gridview之间传递数据 [英] [Solved] Passing data between dropdownlist and gridview using datatable and viewstate

查看:97
本文介绍了[已解决]使用datatable和viewstate在下拉列表和gridview之间传递数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

解决有关下拉列表和gridview的问题。场景如下:我有一个下拉列表和一个gridview。来自数据库的数据绑定到下拉列表。现在,dropdownlist在DataTextField中有1000多个员工姓名,在DataValueField中有员工电子邮件。有一个带有下拉列表的ADD按钮,当我从下拉列表中添加所选项时,它会在gridview中使用自动生成的sr.no,empname(datatextfield)和email(datavaluefield)以及gridview中的一列命令字段(DELETE Button)。问题是,当从下拉列表中输入所选项目时,应该从下拉列表中删除它,当我从gridview中删除这样的记录时,它应该返回到下拉列表。 使用02个不同的数据表进行下拉列表和Gridview来绑定数据和视图状态。



这是数据被插入GRIDVIEW的ADDBUTTON编码。< br $> b $ b

Solve this issue regarding dropdownlist and gridview. The scenario is as following: I have one dropdownlist and one gridview. Data from database is binding to dropdownlist. now dropdownlist has 1000+ employee names in DataTextField and employee emails in DataValueField. there is an ADD button with dropdownlist and when I add the selected item from dropdownlist it comes to gridview with autogenerated sr.no, empname(datatextfield) and email(datavaluefield) and one column of command field(DELETE Button) in the gridview. The issue is that when the selected item has been entered in the gridview from dropdownlist, it should be removed from the dropdownlist and when i delete such record from the gridview it should go back to dropdownlist. "Using 02 different Datatables for Dropdownlist and Gridview for binding data and viewstates as well."

THIS IS THE ADDBUTTON CODING ON WHICH THE DATA IS BEING INSERTED IN GRIDVIEW.

protected void addemp_Click(object sender, EventArgs e)
{
        DataTable empemails = new DataTable();
        int srno = 1;
        empemails.Columns.Add("Sr.No");
        empemails.Columns.Add("EmpName");
        empemails.Columns.Add("Email");
        foreach (GridViewRow gvRow2 in GridView2.Rows)
        {
            empemails.Rows.Add();
            empemails.Rows[empemails.Rows.Count - 1][0] = gvRow2.Cells[0].Text; // empname
            empemails.Rows[empemails.Rows.Count - 1][1] = gvRow2.Cells[1].Text; // empname
            empemails.Rows[empemails.Rows.Count - 1][2] = gvRow2.Cells[2].Text; // emails
        }
        empemails.Rows.Add();
        empemails.Rows[empemails.Rows.Count - 1][0] = srno.ToString();
        empemails.Rows[empemails.Rows.Count - 1][2] = DropDownList2.SelectedItem;
        empemails.Rows[empemails.Rows.Count - 1][2] = DropDownList2.SelectedValue;
        ViewState["CurrentTable"] = empemails;
        GridView2.DataSource = ViewState["CurrentTable"] as DataTable;
        GridView2.DataBind();
    }
}





这是DALDOWNLIST数据与数据库绑定的代码





THIS IS THE CODE ON WHICH DROPDOWNLIST DATA IS BINDED FROM THE DATABASE

protected void empemailbind()
{
    DataTable adp3 = new DataTable();
    OracleConnection dbConn = Conn.getConnection();
    string query3 = "select email,details from EmployeeTABLE";
    OracleCommand cmd3 = new OracleCommand(query3, dbConn);
    dbConn.Open();
    OracleDataAdapter dr3 = new OracleDataAdapter(cmd3);
    dr3.Fill(adp3);
    DropDownList2.DataSource = adp3;
    DropDownList2.DataTextField = "detail";
    DropDownList2.DataValueField = "email";
    DropDownList2.DataBind();
    dbConn.Close();
}





这是在GRIDVIEW中执行的代码。





THIS IS THE CODE ON WHICH ROW_DELETING IS BEING PERFORMED IN THE GRIDVIEW.

protected void GridView2_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
    //LinkButton button = (LinkButton)GridView2.FindControl("(X)");
    DataTable dt = ViewState["CurrentTable"] as DataTable;
    //
    int rowIndex = Convert.ToInt32(e.RowIndex);
    if (dt.Rows.Count >= 0)
    {
        dt.Rows[rowIndex].Delete();
    }
    ViewState["CurrentTable"] = dt;
    GridView2.DataSource = ViewState["CurrentTable"] as DataTable;
    GridView2.DataBind();
}







帮助..谢谢。




help.. Thanks.

推荐答案



试试这个。

Hi,
Try this.
protected void addemp_Click(object sender, EventArgs e)
{
      DataTable empemails = new DataTable();
        int srno = 1;
        empemails.Columns.Add("Sr.No");
        empemails.Columns.Add("EmpName");
        empemails.Columns.Add("Email");
        foreach (GridViewRow gvRow2 in GridView2.Rows)
        {
            empemails.Rows.Add();
            empemails.Rows[empemails.Rows.Count - 1][0] = gvRow2.Cells[0].Text; // empname
            empemails.Rows[empemails.Rows.Count - 1][1] = gvRow2.Cells[1].Text; // empname
            empemails.Rows[empemails.Rows.Count - 1][2] = gvRow2.Cells[2].Text; // emails
        }
        empemails.Rows.Add();
        empemails.Rows[empemails.Rows.Count - 1][0] = srno.ToString();
        empemails.Rows[empemails.Rows.Count - 1][1] = DropDownList2.SelectedItem;
        empemails.Rows[empemails.Rows.Count - 1][2] = DropDownList2.SelectedValue;
        ViewState["CurrentTable"] = empemails;
        GridView2.DataSource = ViewState["CurrentTable"] as DataTable;
        GridView2.DataBind();
        // add this
        DropDownList2.Items.RemoveAt(DropDownList2.SelectedIndex);
}

protected void GridView2_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
    //LinkButton button = (LinkButton)GridView2.FindControl("(X)");
    DataTable dt = ViewState["CurrentTable"] as DataTable;
    //
    int rowIndex = Convert.ToInt32(e.RowIndex);

    //Add this
    string text= Convert.ToString(dt.Rows[rowIndex][1]);
    string value = Convert.ToString(dt.Rows[rowIndex][2]);
    DropDownList2.Items.Add(text, value);


    if (dt.Rows.Count >= 0)
    {
        dt.Rows[rowIndex].Delete();
    }
    ViewState["CurrentTable"] = dt;
    GridView2.DataSource = ViewState["CurrentTable"] as DataTable;
    GridView2.DataBind();
}



希望它可以帮到你。

谢谢。


Hope it helps you.
Thanks.


这篇关于[已解决]使用datatable和viewstate在下拉列表和gridview之间传递数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆