gpt4 book ai didi

asp.net - 如何在asp.net中的GridView中按列名而不是按索引获取单元格值

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

我在 asp.net 中有一个 gridview,现在我想要通过列名称获取单元格值,而不是通过单元格索引。

如何通过单元格列名称检索单元格值

最佳答案

GridView 不充当列名称,因为这是它的 datasource 属性来了解这些内容。

如果您仍然需要知道给定列名的索引,那么您可以创建一个辅助方法来执行此操作,因为 gridview header 通常包含此信息。

int GetColumnIndexByName(GridViewRow row, string columnName)
{
int columnIndex = 0;
foreach (DataControlFieldCell cell in row.Cells)
{
if (cell.ContainingField is BoundField)
if (((BoundField)cell.ContainingField).DataField.Equals(columnName))
break;
columnIndex++; // keep adding 1 while we don't have the correct name
}
return columnIndex;
}

请记住,上面的代码将使用 BoundField...然后使用它:

protected void GridView_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
int index = GetColumnIndexByName(e.Row, "myDataField");
string columnValue = e.Row.Cells[index].Text;
}
}

我强烈建议您使用 TemplateField 来拥有自己的控件,这样就可以更轻松地获取这些控件,例如:

<asp:GridView ID="gv" runat="server">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:Label ID="lblName" runat="server" Text='<%# Eval("Name") %>' />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>

然后使用

string columnValue = ((Label)e.Row.FindControl("lblName")).Text;

关于asp.net - 如何在asp.net中的GridView中按列名而不是按索引获取单元格值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9715983/

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