Привязка данных DropDownList внутри GridView EditItemTemplate - PullRequest
3 голосов
/ 03 августа 2011

У меня есть Gridview, который заполняет данные набором данных.У меня также есть DropDownlist, который является EditTemplate из TemplateField.Я хочу связать его с набором данных, чтобы он мог заполнять данные из него. Я искал его, но, похоже, он не работает. Я новичок в этом.Если не код, некоторые помогают мне получить хороший учебник.

Вот мой фрагмент кода:

`

protected void Page_Load(object sender, EventArgs e)
{
    if (Page.IsPostBack == false) {
        BindGrid();

    }
}
private void BindGrid() { 
    //Get dataset
    //bind

    DataSet ds = new DataSet("Employees");
    SqlConnection con = new SqlConnection("Password=admin;User ID=admin;Initial Catalog=asptest;Data Source=dbsvr");
    SqlDataAdapter da = new SqlDataAdapter("select * from employees", con);

    da.Fill(ds);
    gvEmp.DataSource = ds;
    gvEmp.DataBind();    
}


protected void gvEmp_RowEditing(object sender, GridViewEditEventArgs e)
{
    gvEmp.EditIndex = e.NewEditIndex;
    BindGrid();
    BindDropDown();        
}

private void BindDropDown() {
    //DataSet ds = new DataSet("Employees");
    //SqlConnection con = new SqlConnection("Password=priyal;User ID=priyal;Initial Catalog=asptest;Data Source=dbsvr");
    //SqlDataAdapter da = new SqlDataAdapter("select deptno from employees", con);

    //da.Fill(ds);
    //gvEmp.DataSource = ds;
    //gvEmp.FindControl("ddlDept").DataBind();




}
protected void gvEmp_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
{
    //this means that no index is selected
    gvEmp.EditIndex = -1;
}`

Закомментированный код - это то, что я пробовал.

Спасибо

Ответы [ 2 ]

4 голосов
/ 03 августа 2011

Попробуйте это.

protected void gvEmp_RowEditing(object sender, GridViewEditEventArgs e)
{
    DemoGrid.EditIndex = e.NewEditIndex;
    BindGrid();
    DropDownList dropdown = gvEmp.Rows[e.NewEditIndex].FindControl("DropDownList1") as DropDownList;
    BindDropDown(dropdown);
}

private void BindDropDown(DropDownList temp)
{
    string connectionString = "Password=priyal;User ID=priyal;Initial Catalog=asptest;Data Source=dbsvr";
    string query = "select deptno from employees";
    DataSet dataset = new DataSet("Employees");
    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        using (SqlDataAdapter adapter = new SqlDataAdapter(query, connection))
        {
            adapter.Fill(dataset);
        }
    }

    temp.DataSource = dataset;
    temp.DataTextField = "deptno";
    temp.DataValueField = "deptno";
    temp.DataBind();
}

Если вы не передадите строки DropDownList в качестве параметра, как ваш BindDropDown узнает, к какому DropDownList привязываться?

1 голос
/ 03 августа 2011

Я думаю, что вы были близки - попробуйте это в методе BindDropDown ():

// Set the DropDownList's DataSource (originally you were setting the GridView's DataSource
((DropDownList)gvEmp.FindControl("ddlDept")).DataSource = ds;
// Call DataBind() on the DropDownList
((DropDownList)gvEmp.FindControl("ddlDept")).DataBind();

Вам нужно найти элемент управления в GridView, привести его к правильному типу элемента управления (в данном случае,DropDownList), а затем выполните действия с ним.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...