获取gridview的列值

本文关键字:gridview 获取 | 更新日期: 2023-09-27 18:29:22

我正在尝试获取网格视图的单元格值。我可以通过像这个这样的标签名称访问它

Label cell1 = ((Label)e.Row.FindControl("cellLabel"));

有15-20列,所以我想通过索引访问这些单元格。我用e.Row.Cells[2].Text试过了,但我在这里变空了。

我无法直接访问网格视图,因为它是内部网格视图。如何访问RowDatabound中的单元格值?

网格视图示例

<asp:GridView ID="gvCustomers" runat="server" AutoGenerateColumns="false" CssClass="Grid"
    DataKeyNames="CustomerID" OnRowDataBound="OnRowDataBound">
    <Columns>
        <asp:TemplateField>
            <ItemTemplate>
                <img alt = "" style="cursor: pointer" src="images/plus.png" />
                <asp:Panel ID="pnlOrders" runat="server" Style="display: none">
                    <asp:GridView ID="gvOrders" runat="server" AutoGenerateColumns="false" CssClass = "ChildGrid">
                        <Columns>
                            <asp:BoundField ItemStyle-Width="150px" DataField="OrderId" HeaderText="Order Id" />
                            <asp:BoundField ItemStyle-Width="150px" DataField="OrderDate" HeaderText="Date" />
                        </Columns>
                    </asp:GridView>
                </asp:Panel>
            </ItemTemplate>
        </asp:TemplateField>
        <asp:BoundField ItemStyle-Width="150px" DataField="ContactName" HeaderText="Contact Name" />
        <asp:BoundField ItemStyle-Width="150px" DataField="City" HeaderText="City" />
    </Columns>
</asp:GridView>

gvOrders是内部网格视图。

获取gridview的列值

您可以直接从数据源获取

string str = Convert.ToString(DataBinder.Eval(e.Row.DataItem, "YourColumnName"));

要通过索引访问它,您可以尝试

string str = ((DataBoundLiteralControl)e.Row.Cells[x].Controls[y]).Text;
 protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            string name = e.Row.Cells[0].Text;
        }
    }