Хорошо, предполагая вид сетки?
У нас есть такая разметка:
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="ID" CssClass="table table-hover" OnRowDataBound="GridView1_RowDataBound">
<Columns>
<asp:BoundField DataField="FirstName" HeaderText="FirstName" />
<asp:BoundField DataField="LastName" HeaderText="LastName" />
<asp:BoundField DataField="HotelName" HeaderText="HotelName" />
<asp:BoundField DataField="City" HeaderText="City" />
<asp:TemplateField HeaderText="Check Test" ItemStyle-HorizontalAlign="Center">
<ItemTemplate>
<asp:CheckBox ID="CheckBox1" runat="server" OnClick="MyCheckBoxClick(this);"/>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<script>
function MyRowCheck(ctrl) {
MyCheckBox = document.getElementById(ctrl);
MyCheckBox.checked = !MyCheckBox.checked
}
function MyCheckBoxClick(ct) {
ct.checked = !ct.checked
}
</script>
код для загрузки:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
LoadGrid();
}
}
void LoadGrid()
{
using (SqlCommand cmdSQL = new SqlCommand("SELECT TOP 12 * from tblHotels ORDER BY HotelName",
new SqlConnection(Properties.Settings.Default.TEST3)))
{
cmdSQL.Connection.Open();
GridView1.DataSource = cmdSQL.ExecuteReader();
GridView1.DataBind();
}
}
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
CheckBox MyCheckBox = (CheckBox)e.Row.FindControl("CheckBox1");
e.Row.Attributes["onclick"] = "MyRowCheck('" + MyCheckBox.ClientID + "');";
}
}
Итак, мы просто присоединяем ROW клик к сетке.
Мы получаем следующий вывод:

это работает нормально, и щелчок по строке установит флажок.
но тогда ПРОБЛЕМА возникает, если вы на самом деле щелкаете по флажку. Щелчок строки активирует флажок, а затем щелчок флажка ТАКЖЕ активирует и отменяет то, что вы только что сделали!!
Итак, я добавил событие по щелчку в флажок, и мы просто снова переключаем настройку, и все готово.
Неясно, нужна ли вам кнопка за пределами сетки, которую вы нажимаете, и она выбирает все флажки для вас, или если вы хотите, чтобы пользователь щелкнул ЛЮБОЕ место в строке или флажок, чтобы установить флажок.
@AlbertD.Kallal Мне жаль, что я не смог это прояснить. Но вы правы. Если я нажму ЛЮБОЕ место в строке или флажок, чтобы установить флажок.