我目前处于困境,我的gridview不返回标签,该标签位于detailsview内。

我的C#代码是:

protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
{
    // get pet number for when removing a pet from reservation
    int numberSelected = -1;
    String numbertxt = "-1";

    GridView gv1 = (GridView)sender;
    GridViewRow rvRow = gv1.Rows[gv1.SelectedRow.RowIndex];
    Label numberLbl = (Label)rvRow.Cells[0].FindControl("lblNumber");

    // find selected index, and get number in column 0
    // label within GridView1 within dvReservation DetailsView
    numbertxt = numberLbl.Text;
    ...

网格视图:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
    DataSourceID="dsObjGet" 
    OnSelectedIndexChanged="GridView1_SelectedIndexChanged">
    <Columns>
        <asp:TemplateField InsertVisible="False" ShowHeader="False">
            <AlternatingItemTemplate>
                <asp:Label ID="lblNumber" runat="server"
                    Text='<%# Eval("NUMBER") %>' Visible="False"></asp:Label>
            </AlternatingItemTemplate>
            <ItemTemplate>
                <asp:Label ID="lblNumber" runat="server" 
                    Text='<%# Eval("NUMBER") %>' Visible="False"></asp:Label>
            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField ShowHeader="False">
            <AlternatingItemTemplate>
                <asp:Label ID="lblName" runat="server" Text='<%# Eval("NAME") %>'>
                </asp:Label>
            </AlternatingItemTemplate>
            <ItemTemplate>
                <asp:Label ID="lblName" runat="server" Text='<%# Eval("NAME") %>'>
                </asp:Label>
            </ItemTemplate>
        </asp:TemplateField>
        <asp:CommandField SelectText="Remove" ShowSelectButton="True" 
            CausesValidation="False">
            <ControlStyle CssClass="link" />
        </asp:CommandField>
    </Columns>
</asp:GridView>

当我断点

Label numberLbl = (Label)rvRow.Cells[0].FindControl("lblNumber");

标签显示为null (numberLbl)...

从异常返回的消息是:“对象引用未设置为对象的实例”

编辑:如果我用Eval(“ NUMBER”)在外部gridview(在页面上)生成lblNumber,这似乎可以解决,尽管我不明白为什么它在我尝试使用的当前GridView中不起作用,因为GridView1位于DetailsView中。

===============>>#1 票数:0

使用FindControl时,不应使用单元格集合。 只是用这个

GridView gv1 = (GridView)sender;
GridViewRow rvRow = gv1.SelectedRow;
Label numberLbl = (Label)rvRow.FindControl("lblNumber");

  ask by user3554331 translate from so

未解决问题?本站智能推荐:

2回复

FindControl在GridView中返回NULL

我试图从ASP.NET中的代码隐藏操作GridView字段中的DropDownList 。 我通过使用FindControl方法将引用添加到本地DDL来实现。 但是,它似乎不起作用,我尝试了多种方法( Load , Init Events),但始终得到NullReferenceExcepti
2回复

gridview findcontrol返回空的“”

我试图通过使用此代码从gridview内的文本框中读取 此代码不断返回“”(空) 知道为什么会发生这种情况吗? 谢谢
2回复

FindControl在OnRowCommand事件中返回null

我有一个带有很少控件的gridview,我试图通过使用FindControl方法在OnRowCommand事件中获取这些控件,但它始终返回null。 这是GridView 这是行命令事件 我想做的是从中获取所选行,并从其控件中获取值,以便在交易页面中使用它们。 编辑:
1回复

FindControl如何在GridView中工作?

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

gridview findcontrol不返回任何空字符串(空白)

我试图使用GridView1_RowEditing1事件从gridview选择行传递会话值。 我能够获取主键(p.key)的会话值,但是Associate_ID返回空。 后面的C#代码 .ASPX 输出: 关键点:5 名称: 如您所见,我没有为所选字段获
2回复

FindControl在GridView中找不到正确的控件

我在GridView中有一个GridView和HiddenField的问题。 我试图基于HiddenField的值提取一些数据,该值基本上是每条记录的row_id,但是由于某种原因,无论我在GridView中选择哪一个数据,我都会不断获取相同的数据。 下面的代码是我正在GridView中找到
2回复

为什么e.findcontrol返回null

我试图在绑定行数据的gridiview模板字段内找到一个服务器控件,但它返回null。 为什么呢 我正在寻找一个 具有runat属性的控件,但它返回null。 实际上,我正在尝试在此控件中加载HTML文本。 .aspx
1回复

某些回发后,DetailsView FindControl()返回null

我已经使用GridViews和DetailsViews很长时间了,但是昨天我遇到了一个新的场景,对此我还是不太了解。 我有一个带有ImageButton(CommandName =“ Insert”)的GridView,它将把DetailsView的模式更改为Insert。 然后,我将在
1回复

FindControl返回空文本对象

前端 长时间工作在ASP.Net GridView上,我被困在EditItemTemplate中的GridView中找到文本框对象。 从最近几个小时开始搜寻,但无法找到我的问题的解决方案。 请帮忙。
3回复

GridView.FindControl()-可以,但是不能正常使用

我的GridView列看起来像这样: 在创建新行时,我想更改两个LinkBut​​ton的CommandArgument属性: 问题是,代码似乎没有改变任何东西,当我单击AcceptBtn时,将调用以下代码: ss =“”。 为什么呢 如果页面是PostBack,则两