Не думаю, что есть способ сделать это, как указано, без обработки событий RowEditing
, RowUpdating
и RowCancelingEdit
.
В качестве альтернативы, я бы предложил добавить CommandField
к GridView
, вот так:
<asp:CommandField ShowSelectButton="true" />
Вам нужно обработать GridView.SelectedIndexChanging, снова вот так:
void GridView_SelectedIndexChanging(object sender, GridViewSelectEventArgs e)
{
GridView.SelectedIndex = e.NewSelectedIndex;
}
Попав в SelectedIndexChanging
, вы можете использовать GridView.Rows[e.NewSelectedIndex].FindControl("id")
, чтобы получить необходимый контроль - при условии, что эта функциональность все еще важна для вас.
Редактировать: Я только что прочитал ваше обновление, и я не совсем уверен, чего вы здесь добиваетесь. Похоже, вы знакомы с CommandField
. Что вы хотите, чтобы ваш веб-сайт делал, когда вы устанавливаете этот флажок, который должен выполняться независимо от состояний строки?
Редактировать 2: Вы также можете привести object sender
к своему CheckBox
и найти подходящее GridRow
, используя .Parent()
, но это всегда было для меня чрезвычайно хакерским.
Редактировать 3: Клянусь, я собираюсь прекратить редактировать это в конечном итоге.
Я никогда не пробовал этого, но вы могли бы получить ссылку на CheckBox.ClientID
и попробовать просмотреть каждую строку в GridView и вызвать GridViewRow.FindControl(CheckBox.ClientID)
. Я действительно понятия не имею, будет ли это работать, хотя.