Как получить имя столбца из gridview? - PullRequest
7 голосов
/ 07 марта 2012

Я хотел бы знать, как я могу получить имя столбца из gridview? по номеру не по имени. как: имя | возраст | день рождения: (так имя = 0, возраст = 1 и т. д.)

спасибо.

Ответы [ 6 ]

15 голосов
/ 07 марта 2012

Вы можете получить это так:

gv.HeaderRow.Cells[i].Text

Или вот так:

gv.Rows[0].Cells[i].Text

Строки [0] должны быть вашей строкой заголовка.

3 голосов
/ 09 октября 2013
//// Header column names
int gridViewCellCount = yourGridView.Rows[0].Cells.Count;
// string array to hold grid view column names.
string[] columnNames = new string[gridViewCellCount];

for (int i = 0; i < gridViewCellCount; i++)
{
    columnNames[i] = ((System.Web.UI.WebControls.DataControlFieldCell)(yourGridView.Rows[0].Cells[i])).ContainingField.HeaderText;
}
2 голосов
/ 07 марта 2012

просто

 GridView1.Rows[0].Cells[0].Text;

попробуйте это, если хотите, чтобы все значения ячеек в каждой из строк

  foreach (GridViewRow r in GridView1.Rows)
    {
        string s = r.Cells[0].Text;
        string y = r.Cells[1].Text;
    }

Обновление:

попробуйте это

  foreach (TableCell Tc in GridView1.HeaderRow.Cells)
    {
        //if you are not getting value than find childcontrol of TabelCell.
        string sssb = Tc.Text;
        foreach (Control ctl in Tc.Controls)
        {

            //Child controls
            Label lb = ctl as Label;
            string s = lb.Text;
        }
    }
1 голос
/ 28 сентября 2015

Возвращаясь к этому старому вопросу .... можно получить имена полей данных, привязанных к GridView с помощью этого вида кода.Это делает словарь colnum и имя поля.

private static IDictionary<int, string> GetGridViewFieldNames(object grid)
{
    var names = new Dictionary<int, string>();
    var view = grid as GridView;
    if (view != null)  {
        for (var i = 0; i < view.Columns.Count; i++)  {
            var field = view.Columns[i] as BoundField;
            if (field != null)  {
                names.Add(i, field.DataField);
            }
        }
    }
    return names;
}
0 голосов
/ 30 июня 2016

Это просто: здесь я читаю текст заголовка gridview для каждой ячейки заголовка и добавляю их как новые столбцы в таблицу данных.

DataTable dt = new DataTable();
foreach(DataControlFieldHeaderCell column in yourGridview.HeaderRow.Cells)
{
  dt.Columns.Add(column.Text.Trim().Replace(" ", ""));                           
}

//Make sure you do all this after yourGridview.DataBind(); 
//If you do not want to bind data first simply bind an empty list like so:
/* yourGridview.DataSource = new List<string>();
   yourGridview.DataBind(); */
0 голосов
/ 21 июня 2013

Это не ответ на вопрос. Это только ответ, если вы никогда не измените текст заголовка в виде сетки. Автор вопроса хотел получить имя поля базы данных по индексу.

Я видел несколько «ответов», которые предоставляют только текст в выбранной строке вида сетки или текст заголовка, которые оба не отвечают на заданный вопрос ...

Вы можете спросить, почему? Если вы собираетесь проводить аудит обновлений в системе и хотите сравнить старые значения и новые значения и обновлять их только в том случае, если они изменяются, и хотите указать, какое поле было обновлено, как вы показываете имя поля таблицы базы данных по индексу цикла.

Например:

Protected Sub gv_RowUpdating(sender As Object, e As System.Web.UI.WebControls.GridViewUpdateEventArgs)
    Dim intValCount As Integer = Integer.Parse(e.NewValues.Count)
    If intValCount > 0 Then
        Dim i As Integer = 0
        For i = 0 To intValCount - 1
            If Not e.OldValues(i).Equals(e.NewValues(i)) Then
                ' values have changed, audit the change
                Sys.Audits.General(intID, "the_database_table", <the table field by index(i)>, e.OldValues(i).ToString, e.NewValues(i).ToString)
            End If
            i += 1
        Next
    End If
End Sub

Итак, вопрос в том, как получить имя поля таблицы базы данных по индексу через код позади? Я тоже искал это, и все «ответы», которые я видел, не являются ответами, я думаю, что некоторые из нас действительно ищут. Все упомянутые выше методы не являются пуленепробиваемыми ссылками на имя поля таблиц базы данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...