как очистить столбец GridView больше показателя 1.Как очистить GridView колонка больше показателя 1
grdview.Columns.Clear()
будут удалены все столбцы, но мне нужно, чтобы очистить столбцы больше, чем индекс 1
как очистить столбец GridView больше показателя 1.Как очистить GridView колонка больше показателя 1
grdview.Columns.Clear()
будут удалены все столбцы, но мне нужно, чтобы очистить столбцы больше, чем индекс 1
идти с петлей, как
for (i = 2; i < grdview.columns.count; i ++)
{
grdview.columns[2].remove();
}
Это непроверенный код. пожалуйста, проверь это.
for (i = 2; i < gridView.Columns.count; i ++)
{
gridView.Columns[i].Remove();
}
Коррекция
while(gridView.Columns.count>2)
{
gridView.Columns.RemoveAt(2);
//Or gridView.Columns.RemoveAt(gridView.Columns.Count -1);
}
Проблема заключается в том, что после удаления столбца с индексом 2 столбец, который * был * с индексом 3, теперь будет иметь индекс 2. Если я не ошибаюсь, это означает, что вы получите «Индекс за пределами границ», исключение. –
Я не думаю, что вы получите исключение «Index out of bounds», так как gridView.Columns.count переоценивается каждый раунд. Но многие столбцы просто не будут удалены (около половины из них). –
ahhh, Правильно !. –
Я не программист C#, но я полагаю, что, как и в Delphi (тот же язык архитектор) коллекции 0 основе. Поэтому
for (i = gridView.Columns.count - 1; i > 1; i --)
{
gridView.Columns[i].Remove();
}
При удалении от 2 до gridView.Columns.count - 1, то вы не удалить все столбцы, так как они сдвигаются, когда столбец удаляется, то есть после первого Вытащите колонны двух, колонка третий был вторым, но следующий удаленный столбец будет третьим (i = 3).
Альтернатива:
while (gridView.Columns.Count > 2)
{
gridView.Columns[gridView.Columns.Count - 1].Remove();
}
Я считаю, что вы работаете с ASP.NET это будет делать. Однако я хотел бы знать, почему вы хотите удалить столбец. Я мог бы дать вам лучшее решение.
foreach(DataGridColumn col in vGrid.Columns)
{
col.Visible = false;
}
vGrid.Columns[0].Visible = true;
vGrid.Columns[1].Visible = true;
или если вы используете поле шаблона
foreach(TemplateField col in vGrid.Columns)
{
col.Visible = false;
}
vGrid.Columns[0].Visible = true;
vGrid.Columns[1].Visible = true;
Вы можете использовать следующий код:
while(grid.Columns.Count > 2)
{
Grid.Columns.RemoveAt(grid.Columns.Count - 1);
}
легче скрыть столбцы, а не удалять, так как удаление элемента перечисление заставляет перечислитель быть сброшен, поэтому вам нужно выполнить операцию добавления, чтобы рассмотреть такое поведение, ИМО.
using System.Linq;
GridView1.Columns
.OfType<DataControlField>()
.Where(c => GridView1.Columns.IndexOf(c) > 1)
.ToList()
.ForEach(c => c.Visible = false);
или
foreach(var c in GridView1.Columns
.OfType<DataControlField>()
.Where(c => GridView1.Columns.IndexOf(c) > 1))
{
c.Visible = false;
}
Это будет работать. Однако удаление столбцов (2) всегда приведет к смещению дополнительных столбцов вниз, что делает это дорогостоящим. –