Наиболее вероятная причина - это приведение:
gvFarmer.Rows[e.RowIndex].FindControl("txtFarmerID") as TextBox
Это приведение вернет нулевое значение, если тип строки не равен DataRow
или элемент управления не найден в соответствующей строке и выдает NullReferenceException
при использовании свойства Text
. Вы должны попробовать использовать свойство Cells
:
insert.Parameters.AddWithValue("@Farmer_Id", (gvFarmer.Rows[e.RowIndex].Cells[n].FindControl("txtFarmerID") as TextBox).Text.Trim());
n
указывает индекс столбца, где устанавливается txtFarmerID
(обычно столбец идентификатора устанавливается как индекс 0).
Если это все еще не работает, добавьте атрибут DataKeyNames
в разметку:
<asp:GridView ID="gvFarmer" runat="server" DataKeyNames="Farmer_Id" ...>
<%-- grid contents --%>
</asp:GridView>
Затем попробуйте использовать DataKeys
свойство collection:
insert.Parameters.AddWithValue("@Farmer_Id", gvFarmer.DataKeys[e.RowIndex].Value.ToString().Trim());
Я думаю, что последний подход лучше, потому что вам не нужно искать элемент управления, который содержит уникальное значение для удаления строки, так как имя ключевого поля уже определено.
Аналогичная проблема:
Ошибка редактирования и удаления "Ссылка на объект" в GridView