How to get the cell value by column name not by index in GridView in asp.net

后端 未结 10 1594
轻奢々
轻奢々 2020-12-01 06:21

I am having a gridview in asp.net and now I want the cell value by the column name but not by the cell index.

How would be it possible

10条回答
  •  隐瞒了意图╮
    2020-12-01 06:30

    GridView does not act as column names, as that's it's datasource property to know those things.

    If you still need to know the index given a column name, then you can create a helper method to do this as the gridview Header normally contains this information.

    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;
    }
    

    remember that the code above will use a BoundField... then use it like:

    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;
        }
    }
    

    I would strongly suggest that you use the TemplateField to have your own controls, then it's easier to grab those controls like:

    
        
            
                
                    
                
            
        
    
    

    and then use

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

提交回复
热议问题