获取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
是内部网格视图。
您可以直接从数据源获取
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;
}
}