Member 10192073 Ответов: 1

Как найти индекс столбца по имени столбца базы данных в представлении сетки в C#


привет,
Я хочу найти индекс столбца по имени столбца базы данных bind может ли кто-нибудь помочь мне, как достичь этой функциональности

<asp:TemplateField HeaderText="Ref Doc#">
    <ItemTemplate>
        <%# Eval("poNo")%>
    </ItemTemplate>
    <ItemStyle CssClass="textAlignCenter noWrap" />
        <HeaderStyle CssClass="textAlignCenter noWrap" />
</asp:TemplateField>
<asp:TemplateField HeaderText="Ref Date">
    <ItemTemplate>
        <%# Eval("poDate", "{0:dd-MMM-yyyy}")%>
    </ItemTemplate>
    <FooterTemplate>
        <asp:Label ID="lblSum" runat="server" Text="Total Amount:" Font-Bold="true"></asp:Label>
    </FooterTemplate>
    <ItemStyle CssClass="textAlignCenter noWrap" />
    <HeaderStyle CssClass="textAlignCenter noWrap" />
    <FooterStyle CssClass="textAlignLeft" />
</asp:TemplateField>   


protected void grdOutstandingInvoice_RowDataBound(object sender, GridViewRowEventArgs e)
{

}


Я хочу найти индекс столбца по Eval ("poNo"), как мы можем этого достичь. пожалуйста, помогите мне.

заранее спасибо

Что я уже пробовал:

Я очень старался закодировать это
grdOutstandingInvoice.Columns[7].Visible = false;


но в соответствии с требованиями они добавили еще несколько столбцов,
тогда я попробовал это
private int GetColumnIndexByName(GridView grid, string name)
    {
        foreach (DataControlField col in grid.Columns)
        {
            if (col.HeaderText.ToLower().Trim() == name.ToLower().Trim())
            {
                return grid.Columns.IndexOf(col);
            }
        }

        return -1;
    }


protected void grdOutstandingInvoice_RowDataBound(object sender, GridViewRowEventArgs e)
{
var index = GetColumnIndexByName(grid,name);
}



Но раньше название заголовка было Reference Doc, теперь они изменили его на Ref Doc# вот почему я не хочу рисковать в будущем, я хочу найти индекс столбца по полю столбца моей базы данных, которое никогда не изменится

1 Ответов

Рейтинг:
1

lekhasreekrishna@gmail.com

protected void grdOutstandingInvoice_RowDataBound(object sender, GridViewRowEventArgs e)
{
var index = GetColumnIndexByName(grid,name);
}

Замените приведенную выше функцию следующей

protected void grdOutstandingInvoice_RowDataBound(отправитель объекта, GridViewRowEventArgs e)
{
var index = GetColumnIndexByName(grdOutstandingInvoice, poNo);
}

если он не работает, пожалуйста, попробуйте использовать следующую функцию


в <предварительно>в статических публичных инт GetColumnIndexByDBName(GridView в grdOutstandingInvoice, строки поно)
{
Системы.Веб.Пользовательского интерфейса.WebControls.Столбец Данных BoundField;

for (int Index = 0; Index < grdOutstandingInvoice.Столбцы.Count; Index++)
{
Объект datacolumn = grdOutstandingInvoice.Колонки[индекс] как системы.Веб.Пользовательского интерфейса.WebControls.BoundField;

if (DataColumn != null)
{
если (объект datacolumn.DataField = = поно)
возвращаемый индекс;
}
}
возврат -1;

}


Member 10192073

var index = GetColumnIndexByName(grdOutstandingInvoice, " Ref Doc#");
но я не хочу искать по названию заголовка
прямо поно, как я могу дать?