gpt4 book ai didi

asp.net - 无法通过 OnRowEditing 事件在 EditTemplate 中找到控件

转载 作者:行者123 更新时间:2023-12-02 03:55:00 24 4
gpt4 key购买 nike

我有一个像这样的 GridView:

<asp:GridView runat="server" ID="grdPractices" PageSize="10" AutoGenerateColumns="False" DataKeyNames="Id" 
CssClass="linkGrid" AllowSorting="True" OnSorting="grdPractices_OnSorting" OnRowDataBound="grdPractices_OnRowDataBound"
OnRowEditing="grdPractices_OnRowEditing" OnRowCancelingEdit="grdPractices_OnRowCancelingEdit" OnRowUpdating="grdPractices_OnRowUpdating">
<Columns>
<asp:BoundField DataField="Name" HeaderText="Name" meta:resourcekey="PracticeName" ReadOnly="True" SortExpression="Name" ItemStyle-Width="400px" />
<asp:BoundField DataField="Code" HeaderText="Code" meta:resourcekey="Code" ReadOnly="True" SortExpression="Code" ItemStyle-Width="200px" />
<asp:TemplateField meta:resourcekey="SiteName" ItemStyle-Width="200px" SortExpression="SiteName">
<ItemTemplate>
<asp:Literal runat="server" Text='<%# Eval("SiteName") %>' />
</ItemTemplate>
<EditItemTemplate>
<asp:DropDownList runat="server" ID="lstSites" />
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField meta:resourcekey="NumOfUsers" ItemStyle-Width="200px" SortExpression="NumOfUsers">
<ItemTemplate>
<asp:LinkButton runat="server" OnCommand="OnLinkButtonCommand" CommandName="ViewUsers" Text='<%# Eval("NumOfUsers") %>' />
</ItemTemplate>
</asp:TemplateField>
<asp:CommandField ShowDeleteButton="False" ShowCancelButton="True"
ShowInsertButton="False" ShowEditButton="True" EditText="Edit"
CancelText="Cancel" UpdateText="Update" meta:resourcekey="Edit" ItemStyle-Width="200px" />
</Columns>
</asp:GridView>

这是 OnRowEditing 事件的代码:

protected void grdPractices_OnRowEditing(object sender, GridViewEditEventArgs e)
{
this.grdPractices.EditIndex = e.NewEditIndex;

var sitesDropDown = this.grdPractices.Rows[e.NewEditIndex].Controls[0].FindControl("lstSites") as DropDownList;

if (sitesDropDown == null)
{
return;
}
}

我的问题是我无法获取位于 EditTemplate 中的 lstSites 控件。我试过使用以下内容:

  • this.grdPractices.Rows[e.NewEditIndex].Controls[0].FindControl("lstSites")作为下拉列表;
  • this.grdPractices.Rows[e.NewEditIndex].FindControl("lstSites") 作为下拉列表;
  • this.grdPractices.Rows[e.NewEditIndex].FindControlRecursive("lstSites")作为下拉列表;

结果始终相同,返回一个 NULL

在 OnRowEditing 事件中,你究竟应该如何获得一个连续的控件?

最佳答案

好吧,在这一行之后我没有做的事情:

this.grdPractices.EditIndex = e.NewEditIndex;

然后重新绑定(bind)网格的数据。所以重新绑定(bind)数据后,然后调用:

var sitesDropDown = this.grdPractices.Rows[e.NewEditIndex].FindControlRecursive("lstSites") as DropDownList;

我现在可以与 siteDropDown 变量交互,因为它现在包含对 lstSites 控件的引用。

关于asp.net - 无法通过 OnRowEditing 事件在 EditTemplate 中找到控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13069775/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com