Не могу получить значение ячейки на gridview, вложенном в formview
У меня есть вид формы и вложенный вид сетки, где я хотел бы иметь возможность выбрать значение конкретной ячейки, когда строка была обновлена. Я взял пример кода с сайта msdn, так как он близок к тому, что я хочу:
protected void GridView1_RowUpdated(object sender, GridViewUpdatedEventArgs e)
{
GridView SprayGrid = (GridView)FormView1.FindControl("GridView1");
int Index = SprayGrid.EditIndex;
GridViewRow row = SprayGrid.Rows[Index];
TextBox message = (TextBox)FormView1.FindControl("TextBox1");
message.Text = row.Cells[4].Text;
}
Тем не менее, по какой-то причине это будет только захватить индекс ячейки, т.е. если я изменю row.cells[0], я могу видеть в своем окне сообщения номер индекса, если я хочу увидеть любую другую ячейку, тогда сообщение пустое? Любые идеи будут великолепны.
1 ответ
Используйте DataKeys в GridView, и вместо того, чтобы пытаться установить значение TextBox из ячейки, установите его из DataKey.
В ASPX:
<asp:GridView Id="GridView1" runat="server" DataKeyNames="SomeColumnName">
И в вашем ряду обновление события:
TextBox message = (TextBox)FormView1.FindControl("TextBox1");
message.Text = SprayGrid.DataKeys[row.RowIndex]["SomeColumnName"].ToString();