How to access a gridview column on rowdatabound ?

前端 未结 3 1384
渐次进展
渐次进展 2021-02-06 12:09

I would like to change the value of my gridview column to active when the value is 1. I have gridview column like



        
相关标签:
3条回答
  • 2021-02-06 12:53

    Here's a few utilities I wrote years ago that may help you:

    // ---- GetCellByName ----------------------------------
    //
    // pass in a GridViewRow and a database column name 
    // returns a DataControlFieldCell or null
    
    static public DataControlFieldCell GetCellByName(GridViewRow Row, String CellName)
    {
        foreach (DataControlFieldCell Cell in Row.Cells)
        {
            if (Cell.ContainingField.ToString() == CellName)
                return Cell;
        }
        return null;
    }
    
    // ---- GetColumnIndexByHeaderText ----------------------------------
    //
    // pass in a GridView and a Column's Header Text
    // returns index of the column if found 
    // returns -1 if not found 
    
    static public int GetColumnIndexByHeaderText(GridView aGridView, String ColumnText)
    {
        TableCell Cell;
        for (int Index = 0; Index < aGridView.HeaderRow.Cells.Count; Index++)
        {
            Cell = aGridView.HeaderRow.Cells[Index];
            if (Cell.Text.ToString() == ColumnText)
                return Index;
        }
        return -1;
    }
    
    // ---- GetColumnIndexByDBName ----------------------------------
    //
    // pass in a GridView and a database field name
    // returns index of the bound column if found 
    // returns -1 if not found 
    
    static public int GetColumnIndexByDBName(GridView aGridView, String ColumnText)
    {
        System.Web.UI.WebControls.BoundField DataColumn;
    
        for (int Index = 0; Index < aGridView.Columns.Count; Index++)
        {
            DataColumn = aGridView.Columns[Index] as System.Web.UI.WebControls.BoundField;
    
            if (DataColumn != null)
            {
                if (DataColumn.DataField == ColumnText)
                    return Index;
            }
        }
        return -1;
    }
    
    0 讨论(0)
  • 2021-02-06 12:59

    Cleaner easier to read LINQ. Tim's did not work for me.

    private int GetFirstGridViewColIndex(string dataField, object sender)
    {
        var boundFieldColumns = ((GridView)sender).Columns.Cast<BoundField>();
    
        return boundFieldColumns.Where((column, index) => string.Equals(column.DataField, dataField, StringComparison.InvariantCultureIgnoreCase))
            .Select((column, index) => index)
            .First();
    }
    
    0 讨论(0)
  • 2021-02-06 13:01

    You could loop all columns to get the correct index or use this LINQ:

    String colToFind = "status";
    int colIndex = ((GridView)sender).Columns.Cast<DataControlField>()
                    .Where((c, index) => c.HeaderText.ToLower().Equals(colToFind))
                    .Select((c,index)=>index).First();
    
    0 讨论(0)
提交回复
热议问题