gridview内的Gridview - 在ASP.NET中使用父行值作为参数?

时间:2010-10-15 16:47:36

标签: c# asp.net gridview

在此处跟进问题:Complex editing on a gridview in C#

我有以下示例gridview: alt text

我想要做的是每当我点击“编辑”时,离开时间栏就会变成一个网格视图,其中显示相应日期的小时数。但是,我不知道如何检索相应的日期作为子GridView的dataSource的参数。

例如,我尝试过:

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

但它不起作用,即使它确实如何告诉它检索所选行的相应日期?

如果有人知道更好的方法,我们将非常感激。

提前致谢, 伊顿B。

1 个答案:

答案 0 :(得分:2)

我认为你不能以这种方式使用gridview BoundField作为控制参数。我会做的是:

  1. 在Parent GridView
  2. 中将日期设置为数据键
  3. 为父GridView RowEditing事件添加事件处理程序。
  4. 在该事件中,将数据源的SelectParameter设置为已编辑行的日期
  5. 父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();
    }