Поскольку ваше Gridview находится в своей простейшей форме без элементов управления, определенных в gridView (и, следовательно, в GridView не определено текстовое поле Валюта), пожалуйста, проверьте источник данных GridView1, который, как я предполагаю, будет Datatable.
Затем вам нужно определить, какой столбец таблицы данных является столбцом Валюта.
Например, для приведенной ниже таблицы данных это будет столбец 2.
DataTable taskTable = new DataTable("AmountList");
taskTable.Columns.Add("Id", typeof(int));
taskTable.Columns.Add("Currency", typeof(string));
taskTable.Columns.Add("Amount", typeof(decimal));
Исходя из этого, вы можете получить обновленную стоимость валюты, используя следующий код ниже.
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
GridViewRow row = TaskGridView.Rows[e.RowIndex];
GridView1.EditIndex = -1;
TextBox txtCurrency = (TextBox)(row.Cells[2].Controls[0]);
if (!Page.IsPostBack)
{
FillTravelers();
}
//... Rest of the code
}
Обратите внимание, что если столбец Валюта отличается от приведенного выше, вам необходимо изменить индекс rows.Cells [index] .Controls [0]. Например, если Валюта находится в столбце 5, то определение txtCurrency становится следующим:
TextBox txtCurrency = (TextBox)(row.Cells[5].Controls[0]);
Если вы не можете легко определить индекс столбца таблицы данных (или если вы используете более сложный источник данных), то, предполагая, что GridView1 не имеет слишком много столбцов, я бы порекомендовал попытаться увеличить ячейки индексируйте шаг за шагом, пока вы не увидите обновленное значение в Watch for row.Cells [index] .Controls [0] во время отладки.
Редактировать: (Добавление кода для получения индекса столбца столбца Валюта)
Вы можете передать «Currency» в виде строки и экземпляра OracleDataReader в метод ниже, и это должно дать вам индекс столбца (или это даст вам -1, если в OracleDataReader нет столбца Currency).
private int GetColumnIndexIfExists(OracleDataReader dr, string columnName)
{
for (int i = 0; i < dr.FieldCount; i++)
{
if (dr.GetName(i).Equals(columnName))
{
return i;
}
}
return -1;
}
Затем в реальном коде вы можете изменить add 1 к индексу ячейки, как показано ниже, потому что индекс ячейки не равен нулю, как индекс столбца.
TextBox txtCurrency = (TextBox)(row.Cells[i+1].Controls[0]);