Data binding 当嵌套在两个转发器中时,如何将GridView置于编辑模式?

Data binding 当嵌套在两个转发器中时,如何将GridView置于编辑模式?,data-binding,gridview,nested-repeater,editmode,Data Binding,Gridview,Nested Repeater,Editmode,我在一个中继器内的另一个中继器内有一个Gridview。声明性代码如下所示: <asp:Repeater id="parentRepeater" runat="server"> <itemtemplate> <b> <%# DataBinder.Eval(Container.DataItem, "Name") %></b> <div>

我在一个中继器内的另一个中继器内有一个Gridview。声明性代码如下所示:

<asp:Repeater id="parentRepeater" runat="server">
      <itemtemplate>
            <b> <%# DataBinder.Eval(Container.DataItem, "Name") %></b>
            <div>
               <asp:repeater id="childRepeater" runat="server" datasource='<%# ((DataRowView)Container.DataItem).Row.GetChildRows("myrelation") %>' OnItemDataBound="getNestedData">
                    <itemtemplate>
                         <div><%# DataBinder.Eval(Container.DataItem, "Owner") %></div>
                         <div><asp:GridView ID="Grd" runat="server" AutoGenerateColumns="false" OnRowEditing="EditRecord" HorizontalAlign="Left" Width="100%">
                        </asp:GridView></div>
                </itemtemplate>
                </asp:repeater>
            </div>  
       </itemtemplate>
</asp:repeater>
public void Page_Load(object sender, EventArgs e)
{
        SqlConnection cnn = new SqlConnection("asdf");
        SqlDataAdapter cmd1 = new SqlDataAdapter("select * from tblNames", cnn);
        DataSet ds = new DataSet();
        cmd1.Fill(ds, "names");
        SqlDataAdapter cmd2 = new SqlDataAdapter("select * from tblThings", cnn);
        cmd2.Fill(ds, "things");
        ds.Relations.Add("myrelation",
        ds.Tables["names"].Columns["id"],
        ds.Tables["things"].Columns[NameID"]);
        parentRepeater.DataSource = ds.Tables["names"];
        Page.DataBind();
        cnn.Close();
}
因此,这将设置父中继器和子中继器,并且当子中继器具有itemdatabound时,会发生以下绑定gridview的情况:

 public void getNestedData(Object Sender, RepeaterItemEventArgs e)
    {
        GridView subGridView = (GridView)e.Item.FindControl("Grd");
        DataRow rowView = (DataRow)e.Item.DataItem;
        Int32 key = (Int32)rowView["id"];

        SqlConnection cnn = new SqlConnection("asdf");
        SqlDataAdapter cmd1 = new SqlDataAdapter("select * from tblSubThings WHERE ThingID = " + key, cnn);
        DataSet ds = new DataSet();
        cmd1.Fill(ds, "subThings");
        subGridView.DataSource = ds.Tables["subThings"];

        TemplateField edit = new TemplateField();
        edit.ItemTemplate = new editGridViewTemplate(DataControlRowType.DataRow, "edit");
        subGridView.Columns.Add(edit);

        TemplateField Notes = new TemplateField();
        Notes.ItemTemplate = new GridViewTemplate3(DataControlRowType.DataRow, "Notes");
        Notes.HeaderTemplate = new GridViewTemplate3(DataControlRowType.Header, "Notes");
        Notes.EditItemTemplate = new NotesEditGridViewTemplate(DataControlRowType.DataRow, "Notes");
        subGridView.Columns.Add(Notes);

        subGridView.DataBind();
}
这段代码运行良好。它显示两个中继器内的gridview,带有一个编辑按钮。当启动edit按钮时,gridview应该进入编辑模式(并使用EditItemTemplate)。但是,当调用EditRecord时,gridview不会进入editmode。这是EditRecord的外观:

public void EditRecord(object sender, GridViewEditEventArgs e)
{
        GridView subGridView = (GridView)sender;
        subGridView.EditIndex = e.NewEditIndex;
        subGridView.Rows[e.NewEditIndex].RowState = DataControlRowState.Edit;
        DataBind();
}

有人知道我怎样才能让GridView进入编辑模式吗?

事实上我知道了。。。这是一件愚蠢的事情,但如果有人想知道,我必须调用'SubGridView.DataBind();'而不仅仅是“数据绑定();”