asp: GridView - изменить статус флажка при нажатии в любом месте строки - PullRequest
0 голосов
/ 23 января 2012

У меня есть веб-приложение, и я использую gridview, чтобы показать некоторые данные SQL.В GV у меня есть флажок в первом столбце.Как указано в заголовке, я хочу установить флажок, когда пользователь щелкает в любом месте этой строки.Как я могу это сделать.Спасибо.

Это мой GV;

<asp:GridView ID="myGV" runat="server" AutoGenerateColumns="False" DataKeyNames="ID"
            OnRowDataBound="myGV_OnRowDataBound">
            <Columns>
                <asp:TemplateField>
                    <ItemTemplate>
                        <asp:CheckBox ID="myCB" runat="server" />
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:BoundField DataField="ID" HeaderText="ID" SortExpression="ID" />

Я использую этот код для выделения строки, когда указатель мыши находится над ней;

protected void myGV_OnRowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == System.Web.UI.WebControls.DataControlRowType.DataRow)
    {
        e.Row.Attributes.Add("onmouseover", "this.originalstyle=this.style.backgroundColor;this.style.backgroundColor='#D9ECFB'");
        e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor=this.originalstyle;");
    }
}

РЕДАКТИРОВАТЬ:

Я добавил «OnSelectedIndexChanging» и «OnSelectedIndexChanged» в GridView, а затем попробовал это (как предложено Рави), но не смог заставить его работать.

protected void myGV_SelectedIndexChanging(Object sender, GridViewSelectEventArgs e)
{
    GridViewRow row = myGV.Rows[e.NewSelectedIndex];

    CheckBox chk = (CheckBox)myGV.FindControl("cbIzpis");

    if (chk.Checked == true)
    {
        chk.Checked = false;
    }
    else if (chk.Checked == false)
    {
        chk.Checked = true;
    }
}

protected void myGV_SelectedIndexChanged(Object sender, EventArgs e)
{
    GridViewRow row = nyGV.SelectedRow;
}

1 Ответ

2 голосов
/ 23 января 2012

вы можете использовать свойство GridView.SelectedRow с событием SelectedIndexChanged, Выбранная строка Gridview

 void CustomersGridView_SelectedIndexChanged(Object sender, EventArgs e)
  {

    // Get the currently selected row using the SelectedRow property.
    GridViewRow row = CustomersGridView.SelectedRow;
    MessageLabel.Text = "You selected " + row.Cells[2].Text + ".";

  }

  void CustomersGridView_SelectedIndexChanging(Object sender, GridViewSelectEventArgs e)
  {

    // SelectedIndexChanging event occurs before the select operation in the GridView control, the
    // SelectedRow property cannot be used. Instead, use the Rows collection
    // and the NewSelectedIndex property of the e argument passed to this 
    // event handler.
    GridViewRow row = CustomersGridView.Rows[e.NewSelectedIndex];
    // here you can check the checkbox, by accessing it in template column using findControl method 
     CheckBox chk = (CheckBox) CustomersGridview.FindControl("chkboxID"); 
    chk.checked;    


    if (row.Cells[1].Text == "SomeCondition")
    {

      e.Cancel = true;
      MessageLabel.Text = "You cannot select " + row.Cells[2].Text + ".";

    }

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