【问题标题】:How does FindControl work in GridView?FindControl 在 GridView 中是如何工作的?
【发布时间】:2010-07-12 19:39:12
【问题描述】:

我正在尝试使用 GridView 编辑更新数据库,更新 CommandField。我有两个可编辑字段,在编辑模式下显示为文本框。单击提交时,我试图将文本框值放入要使用的变量中,但我无法访问它们。两个列名是“EOR”和“CategoryName”。我在其他论坛上找到了一些建议,可以尝试以下方法:

protected void ResultGridView_RowUpdating(object sender, GridViewUpdateEventArgs e) 
{ 
    TextBox txtEor = (TextBox)myGridName.Rows[e.RowIndex].FindControl("EOR"); 

当我调试程序时,txtEor 始终为空。我唯一能想到的是我没有正确引用单元格。我将 Headertext、AccessibleHeaderText、DataField 和 SortExpression 设置为“EOR”,但它仍然为空。

任何帮助将不胜感激!

网格视图的asp:

<asp:GridView ID="grdEOR" runat="server" BackColor="White"
            BorderColor="#999999" OnPageIndexChanging="grdEor_PageIndexChanging"
            BorderStyle="Solid" BorderWidth="1px" CellPadding="3" ForeColor="Black" GridLines="Vertical"
            AllowPaging="True"
            PageSize="15" AutoGenerateColumns="False" onrowediting="grdEOR_RowEditing" 
                        onrowcancelingedit="grdEOR_RowCancelingEdit" 
                        onrowupdating="grdEOR_RowUpdating" onrowdeleting="grdEOR_RowDeleting" 
                        ShowFooter="True">
            <PagerSettings Mode="NumericFirstLast" />
            <Columns>
                <asp:BoundField DataField="EORCategoryID" HeaderText="EORCategoryID" 
                    SortExpression="EORCategoryID" ReadOnly="True">
                </asp:BoundField>
                <asp:BoundField DataField="EOR" HeaderText="EOR" SortExpression="EOR" 
                    AccessibleHeaderText="EOR"/>
                <asp:BoundField DataField="CategoryName" HeaderText="CategoryName" 
                    SortExpression="CategoryName" />
                <asp:CommandField ButtonType="Button" ShowDeleteButton="True" 
                    ShowEditButton="True" />


            </Columns>
            <FooterStyle BackColor="#CCCCCC" />
            <PagerStyle BackColor="#999999" ForeColor="Black" HorizontalAlign="Center" />
            <SelectedRowStyle BackColor="#000099" Font-Bold="True" ForeColor="White" />
            <HeaderStyle BackColor="Black" Font-Bold="True" ForeColor="White" />
            <AlternatingRowStyle BackColor="#CCCCCC" BorderColor="Black" 
                BorderStyle="Solid" BorderWidth="5px" />
        </asp:GridView>

【问题讨论】:

  • 您能否发布您尝试导航的相关 ASP?
  • 您是否将文本框放入 EditItemTemplate 中?
  • 我鼓励你使用 ListView,它更容易使用。
  • 感谢您的提示。我将在我的下一个程序中尝试 ListView。我对 C# 很陌生,所以这是我第一次使用 GridView。

标签: c# asp.net gridview findcontrol commandfield


【解决方案1】:

我终于找到了一种可行的方法:

        string newEor = ((TextBox)grdEOR.Rows[e.RowIndex].Cells[1].Controls[0]).Text;
        string newCategoryName = ((TextBox)grdEOR.Rows[e.RowIndex].Cells[2].Controls[0]).Text;

【讨论】:

  • 这很危险,因为它假定边界字段被渲染为文本框。您应该使用 EditItemTemplate 并在其中放置一个文本框。
  • 你知道关于 EditItemTemplate 如何工作的好指南吗?我以前从未使用过。
  • 这里是一个例子:msdn.microsoft.com/en-us/library/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-16
  • 1970-01-01
  • 2011-10-28
  • 1970-01-01
  • 1970-01-01
  • 2011-10-10
相关资源
最近更新 更多