Как получить динамически созданное значение строки флажка в gridview, используя JavaScript - PullRequest
0 голосов
/ 29 января 2019

Я создал сетку с несколькими динамически генерируемыми флажками, но все флажки имеют одинаковый идентификатор.Как я могу получить значение строки выбранного флажка?

вот мой элемент управления dyanamic в gridvie событии привязки строки

protected void grdreport_RowDataBound(object sender, GridViewRowEventArgs e)
{
    int temp = e.Row.Cells.Count;

    temp--;

    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        if (temp >= 3)
        {
            strheadertext1 = grdreport.HeaderRow.Cells[3].Text;

            CheckBox cb1 = new CheckBox();
            cb1.ID = "cb1";
            cb1.Text = e.Row.Cells[3].Text;

            e.Row.Cells[3].Controls.Add(cb1);
        }
    }
}

, и я получаю значение при нажатии кнопки

protected void BtnSave_Click(object sender, EventArgs e)
{
    foreach (GridViewRow row in grdreport.Rows)
    {
        CheckBox checkbox1 = (CheckBox)row.FindControl("cb1");
        checkbox1.Checked = true;

        if (checkbox1.Checked)
        {
            string itemname = row.Cells[0].Text;
            string particular = row.Cells[1].Text;
            string qty = row.Cells[2].Text;
        }
    }
}

но когда я получаю значение, оно дает мне значение первой строки всякий раз, когда я проверяю флажок второй строки

Ответы [ 2 ]

0 голосов
/ 29 января 2019

Вы зацикливаете все строки, но никогда не сохраняете значения вне цикла, поэтому значения всегда будут иметь последний установленный флажок.Посмотрите на следующий фрагмент и значения, записанные в Label1.Это будут значения в строке.

protected void BtnSave_Click(object sender, EventArgs e)
{
    for (int i = 0; i < grdreport.Rows.Count; i++)
    {
        GridViewRow row = grdreport.Rows[i];

        CheckBox checkbox1 = (CheckBox)row.FindControl("cb1");
        if (checkbox1.Checked)
        {
            Label1.Text += string.Format("Row {0}: {1}<br>", i, row.Cells[1].Text);
        }
    }
}
0 голосов
/ 29 января 2019

Вы жестко кодируете свои идентификаторы.Сделайте что-то вроде этого:

//(or take the count of something else if this is not suitable)
int i = e.Row.Cells[3].Controls.count + 1;
CheckBox cb1 = new CheckBox();
cb1.ID = "cb" + i;

Чтобы найти элемент в JavaScript:

var checkbox = document.getElementById("checkboxid");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...