Необходимые индексы строк и столбцов в коде позади, чтобы получить выбранное значение ячейки gridview

1

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

Модаль имеет кнопку "Обновить" и "Отмена".
Я хотел бы, чтобы выбранная ячейка выбрала индексы строк и столбцов в коде позади, чтобы определить, имеет ли клетка с щелчком текстовое значение или нет.

Я могу сделать это в моем коде, здесь:

protected void Grd_RowCommand(object sender, GridViewCommandEventArgs e)
{
    int selectedRowIndex = Convert.ToInt32(e.CommandArgument.ToString());
    int selectedColumnIndex = Convert.ToInt32(Request.Form["__EVENTARGUMENT"].ToString());
}

Это то, что у меня есть, для чего мне нужен код для комментариев справки:

protected void btnUpdate_Click(object sender, EventArgs e)
{
    int selectedRowIndex = //need help
    int selectedColumnIndex = // need help 

    if (Grd.Rows[selectedRowIndex].Cells[selectedColumnIndex].Text == " ")
    {
        //new, insert into db
    }

    else
    { 
        //update existing db record
    }
}  
  • 0
    Отправьте значения строки и столбца модальным (скрытые поля, строка запроса, в любом случае), и затем вы получите их, когда нажмете кнопку обновления. Не имеет смысла получать значения двумя щелчками ранее.
  • 1
    Я отредактировал ваш заголовок. Пожалуйста, смотрите: « Должны ли вопросы включать« теги »в их заголовки? », Где консенсус «нет, они не должны».
Показать ещё 1 комментарий
Теги:
gridview

1 ответ

1
Лучший ответ

Вы можете использовать ViewState для передачи выбранного индекса строки и выбранного индекса столбца между postbacks. Добавьте в свой код следующие свойства

private int SelectedRowIndex
{
   get
   {
      if (ViewState["SelectedRowIndex"] == null)
      {
         return 0;
      }
      else
      {
         return (int)ViewState["SelectedRowIndex"];
      }
   }
   set
   {
      ViewState["SelectedRowIndex"] = value;
   }
}

private int SelectedColumnIndex
{
   get
   {
      if (ViewState["SelectedColumnIndex"] == null)
      {
         return 0;
      }
      else
      {
         return (int)ViewState["SelectedColumnIndex"];
      }
   }
   set
   {
      ViewState["SelectedColumnIndex"] = value;
   }
}

затем присвойте выбранный индекс строки и выбранный индекс столбца свойствам выше в Grd_RowCommand

protected void Grd_RowCommand(object sender, GridViewCommandEventArgs e)
{
    this.SelectedRowIndex = Convert.ToInt32(e.CommandArgument.ToString());
    this.SelectedColumnIndex = Convert.ToInt32(Request.Form["__EVENTARGUMENT"].ToString());
}

и получить значения в btnUpdate_Click

protected void btnUpdate_Click(object sender, EventArgs e)
{
    int selectedRowIndex = this.SelectedRowIndex;
    int selectedColumnIndex = this.SelectedColumnIndex;

    if (Grd.Rows[selectedRowIndex].Cells[selectedColumnIndex].Text == " ")
    {
        //new, insert into db
    }

    else
    { 
        //update existing db record
    }
}  
  • 0
    Это фантастика, сработало как во сне. Огромное спасибо. Единственное, что я изменил, было, if (Grd.Rows[selectedRowIndex].Cells[selectedColumnIndex].Text == " ") { //insert into db }

Ещё вопросы

Сообщество Overcoder
Наверх
Меню