Я заметил что-то странное.Поэтому я хотел бы получить объяснение того, как это работает таким образом.
У меня есть GridView, например:
<asp:GridView ID="_grdFordelinger" runat="server" CssClass="grid" AutoGenerateColumns="False">
<Columns>
<asp:TemplateField>
<HeaderTemplate>
Vælg
</HeaderTemplate>
<ItemTemplate>
<asp:CheckBox ID="FordelingCheckBox" runat="server" />
</ItemTemplate>
<ItemStyle HorizontalAlign="Center" />
</asp:TemplateField>
</Columns>
</asp:GridView>
Как вы видите, у меня определен только один столбецточка, и этот столбец содержит CheckBox для каждой строки.Затем я добавляю дополнительные столбцы из своего кода, а позже, когда пользователь нажимает кнопку, я перебираю строки, чтобы найти строки, в которых отмечен флажок, например:
foreach (GridViewRow row in _fordelingsSelector.Rows)
{
foreach (TableCell cell in row.Cells)
{
foreach (Control control in cell.Controls)
{
if(control is CheckBox)
Trace.Write("I FOUND A CHECKBOX!!!");
}
}
}
Или:
foreach (GridViewRow row in _fordelingsSelector.Rows)
{
var checkBox = (CheckBox) row.FindControl("FordelingCheckBox");
if (checkBox.Checked)
Trace.Write("I will now delete fordeling with id: " + row.Cells[1].Text);
}
Я пробовал оба способа, и оба способа работают, когда я добавляю дополнительные столбцы в GridView с использованием Columns. Добавьте, например:
foreach (var boundField in boundFields)
{
_grdFordelinger.Columns.Add(boundField);
}
Но я бы хотел CheckBoxстолбец будет самым правым столбцом, поэтому я подумал, что было бы бесполезно добавлять столбцы с помощью Columns.Insert, например:
for (int i = 0; i < boundFields.Count; i++)
{
_grdFordelinger.Columns.Insert(i, boundFields[i]);
}
Но теперь я больше не могу найти флажки, используя приведенный выше код (Изменениеиндекс ячейки от 1 до 0, теперь столбец CheckBox является самым правым столбцом).Это почему?Почему столбец CheckBox должен находиться в крайнем левом углу?
Заранее большое спасибо