Gridview внутри gridview - используя значение родительской строки в качестве параметра в ASP.NET? - PullRequest
1 голос
/ 15 октября 2010

В продолжение вопроса здесь: Сложное редактирование на сетке в C #

У меня есть следующий пример gridview: alt text

Что я пытаюсь сделать, так это то, что всякий раз, когда я нажимаю «Изменить», столбец «Листья в» становится сеткой, в которой отображаются часы для соответствующей даты. Однако я не знаю, как получить соответствующую дату в качестве параметра для источника данных дочернего GridView.

Например, я попробовал:

<SelectParameters>
                <asp:ControlParameter ControlID="cphContent$EntryDate" Name="pDate"
                     PropertyName="MyDate" Type="DateTime" />
</SelectParameters>

Но это не сработает, и даже если это сработало, как я могу сказать, что он получает соответствующую дату для выбранной строки?

Если кто-нибудь знает лучший подход, он будет очень признателен.

Заранее спасибо, Итон Б.

1 Ответ

2 голосов
/ 15 октября 2010

Я не думаю, что вы можете использовать gridview BoundField в качестве параметра управления таким образом. Что бы я сделал, это:

  1. Установите дату как ключ данных в Parent GridView
  2. Добавить обработчик события для родительского события GridView RowEditing.
  3. В этом случае установите для параметра SelectParameter источника данных дату отредактированной строки

Родительский GridView будет выглядеть так:

<asp:GridView ID="ParentGridView" runat="server" DataSourceID="ParentObjectDataSource"
    OnRowEditing="ParentGridView_RowEditing" DataKeyNames="Date">

Тогда у вас будет источник данных для дочернего GridView, например:

<asp:ObjectDataSource ID="ChildObjectDataSource" runat="server" SelectMethod="Blah" TypeName="Blah">
    <SelectParameters>
        <asp:Parameter Type="DateTime" Name="Date" />
    </SelectParameters>
</asp:ObjectDataSource>

Тогда в приведенном ниже коде у вас будет обработчик событий RowEditing, например:

protected void ParentGridView_RowEditing(object sender, GridViewEditEventArgs e)
{
    ChildObjectDataSource.SelectParameters["Date"].DefaultValue = GridView1.DataKeys[e.NewEditIndex][0].ToString();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...