изменение порядка границы поля в gridview - PullRequest
0 голосов
/ 10 октября 2011

Я пытаюсь разработать одно приложение, данные отображаются в Gridview. gridview содержит много столбцов связанных полей. Недавно я добавил столбец после конца последнего столбца ограниченного поля таблицы сетки (Импортированный столбец ограниченного поля). так что у меня меньше шансов переместить последнее поле в нужное место в разметке. если я переместу столбец в нужное место, то мне придется изменить всю кодировку, пока строка _databounding. так есть ли способ мы можем изменить порядок столбцов без изменения в разметке? ..

<asp:BoundField DataField="someData" HeaderText="SomeData"> </asp:BoundField>
 <asp:CommandField UpdateText="Update" EditText="Edit" CancelText="|Cancel" ShowEditButton="true" ControlStyle-CssClass="LinkNormal" />
 <asp:BoundField DataField="someData2" HeaderText="Imported"> </asp:BoundField> 

выход будет выглядеть следующим образом (EDit / Delete / Imported являются столбцами ограниченного поля)

SomeData | Обновление | Импортные

что мне нужно сейчас gridview shoud дисплей вот так

Imported | SomeData | Обновление

Ответы [ 2 ]

0 голосов
/ 10 октября 2011

Я бы предложил отказаться от использования индексов столбцов и начать использовать ключи данных для ссылки на значения столбцов в выделенном коде.Таким образом, вы можете изменить разметку и перемещать столбцы, не влияя на выделение кода.

<asp:GridView ID="GridView1" runat="server" DataKeyNames="Col1, Col2, Col3" ... >

Используя ключи данных, вы можете получить значения столбцов, например, в событии RowDataBound:

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    string col1 = GridView1.DataKeys[e.Row.RowIndex]["Col1"].ToString();
}
0 голосов
/ 10 октября 2011

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

int getColumnIndexByHeaderText(GridView gridView, string headerText)
{
    for (int i = 0; i < gridView.Columns.Count; ++i)
    {
        if (gridView.Columns[i].HeaderText == headerText)
            return i;
    }
    return -1;
}

И используйте его вместо жестко закодированных индексов столбцов.

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