Как найти дочерний gridview в пользовательской функции - PullRequest
1 голос
/ 03 апреля 2012

Это мой код для сохранения выбранных значений флажков во время подкачки, но, поскольку я работаю с nested gridview, я не могу найти элемент управления требуемого дочернего gridview

private void SaveCheckedValues()
{
    ArrayList userdetails = new ArrayList();
    int index = -1;
    GridView gv = (GridView)gvCustomers.FindControl("gvOrders"); // Is this correct or any other way of finding the child control
    foreach (GridViewRow gvrow in gv.Rows)
    {
        index = (int)gv.DataKeys[gvrow.RowIndex].Value;
        bool result = ((CheckBox)gvrow.FindControl("chkBoxChild")).Checked;

        // Check in the Session
        if (Session["CHECKED_ITEMS"] != null)
            userdetails = (ArrayList)Session["CHECKED_ITEMS"];
        if (result)
        {
            if (!userdetails.Contains(index))
                userdetails.Add(index);
        }
        else
            userdetails.Remove(index);
    }
    if (userdetails != null && userdetails.Count > 0)
        Session["CHECKED_ITEMS"] = userdetails;
}

Ответы [ 3 ]

0 голосов
/ 03 апреля 2012
private void SaveCheckedValues()
{
    ArrayList userdetails = new ArrayList();
    int index = -1;
    foreach (GridViewRow gvRow1 in gvCustomers.Rows)
    {
        GridView gv = (GridView)gvRow1.FindControl("gvOrders");

        foreach (GridViewRow gvrow in gv.Rows)
        {
            index = (int)gv.DataKeys[gvrow.RowIndex].Value;
            bool result = ((CheckBox)gvrow.FindControl("chkBoxChild")).Checked;

            // Check in the Session
            if (Session["CHECKED_ITEMS"] != null)
                userdetails = (ArrayList)Session["CHECKED_ITEMS"];
            if (result)
            {
                if (!userdetails.Contains(index))
                    userdetails.Add(index);
            }
            else
                userdetails.Remove(index);
        }
    }
    if (userdetails != null && userdetails.Count > 0)
        Session["CHECKED_ITEMS"] = userdetails;
}
0 голосов
/ 03 апреля 2012

попробуйте это:

private void SaveCheckedValues()
{
  foreach(GridViewRow rIndex in GridView1.Rows)
  {
    GridView gv = new GridView();
    gv = (GridView)row.FindControl("GridView2");
    //user gv
  }
}
0 голосов
/ 03 апреля 2012

У меня есть универсальный рекурсивный код управления поиском, который часто помогает в этих обстоятельствах.Проблема с элементами управления сеткой состоит в том, что существует определенный уровень вложенности элементов управления в строке для строки и ячейки и содержимого в ячейке.

Private Function FindControlRecursive(ByVal root As Control, ByVal id As String) As Control

    If root.ClientID Is Nothing AndAlso root.ClientID.EndsWith(id) Then

        Return root
    End If

    For Each c As Control In root.Controls

        Dim t As Control = FindControlRecursive(c, id)
        If Not t Is Nothing Then
            Return t
        End If

    Next c

    Return Nothing
End Function

Код находится на VB.net, но вы получаетесуть

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