Получите доступ к GridView внутри другого GridView из-за кода - PullRequest
0 голосов
/ 20 марта 2012

Я создаю на ascx странице 3 GridViews, например:

<dxwgv:ASPxGridView ID="grid1" ..... >
    <dxwgv:ASPxGridView ID="grid2" .... >
      <dxwgv:ASPXGridView ID="grid3" ....>
      </dxwgv>
    </dxwgv>
 </dxwgv>

Но в коде позади я вижу только первый идентификатор сетки (grid1) и могу управлять только им.Как использовать других?

Ответы [ 3 ]

0 голосов
/ 20 марта 2012

Я думаю

GridView grid2 = (GridView)grid1.FindControl("grid2")
GridView grid3 = (GridView)grid2.FindControl("grid3")

должно работать.

0 голосов
/ 20 марта 2012

Лучшим решением является присвоение уникальных идентификаторов (и ClientInstanceNames), а также сценариев элементам управления во время выполнения.Этот подход описан в следующей статье базы знаний: Общая методика использования обработчика событий Init / Load.

, а затем другой подход, который обрабатывает ASPxGridView.DataBound событие детальной сетки и получение ссылки на сетку через параметр отправителя.Здесь вы можете вызвать ASPxGridView.FindDetailRowTemplateContro l метода основной сетки, если вы используете Основные сведения .

Если вы используете GridView DataRowTemplate, тогда используйте ASPxGridView.FindRowTemplateControl Method , вам просто нужно получить visibleIndex строки, и вы сможете получить доступ к сетке с ее именем.

Если вы используете шаблон Coloumn, тоиспользуйте ASPxGridView.FindRowCellTemplateControl Method

 protected void ASPxGridView1_HtmlDataCellPrepared(object sender, ASPxGridViewTableDataCellEventArgs e) {
        if(e.DataColumn.FieldName == "title") {
            ASPxTextBox textBox = ASPxGridView1.FindRowCellTemplateControl(e.VisibleIndex, e.DataColumn, "ASPxTextBox1") as ASPxTextBox;
            textBox.Text = Convert.ToString(e.CellValue);
        }
    }

Ссылка на них:
ASPxGridView - Как получить доступ к элементам управления внутри DetailRow на стороне клиента

0 голосов
/ 20 марта 2012

Вы не увидите другие виды сетки, так как они скрыты в первом виде сетки, чтобы получить доступ к другим видам сетки, вам необходимо сделать следующее:

  1. создать с помощью кода два элемента управления вида сетки, скажем, имяих: GVsubone и GVsubtwo
  2. в RowDataBound первого вида сетки (видимого для вас) заставляют ваш GVsubone обрабатывать события вашей grid2 следующим образом grid2.RowDataBound += new EventHandler(GVsubone.RowDataBound);
  3. , а затем в GVsuboneRowDataBound вы должны сделать ту же логику для обработки событий для сетки 2

PS вы можете обрабатывать любое событие, примером которого является RowDataBound.

...