У меня, похоже, всегда есть проблемы с этим. У меня есть кнопка вне представления, которая вызывает функцию, которая нуждается в OrderNumber
. Я получаю сообщение об ошибке,Получите значение BoundField из DetailsView
ArgumentOutOfRangeException was unhandled by user code
в режиме отладки, или этот в браузере,
Specified argument was out of the range of valid values.
Это, как я к нему доступ:
string sOrderNumber = (Order_DetailsView.Rows[0].Cells[0].Controls[0] as TextBox).Text;
int orderNumber = Int32.Parse(sOrderNumber);
Я также попробовал ((TextBox)Order_DetailsView.Rows[0].Cells[0].Controls[0]).Text
и каждую комбинацию индексов в Rows[i].Cells[i].Controls[i]
, которую я мог понять.
Вот DetailsView:
<asp:DetailsView ID="Order_DetailsView" runat="server" AutoGenerateRows="False">
<Fields>
<asp:BoundField DataField="OrderNumber" HeaderText="Order #" />
<asp:BoundField DataField="GST" HeaderText="GST" DataFormatString="{0:c}" />
<asp:BoundField DataField="Total" HeaderText="Total" DataFormatString="{0:c}" />
</Fields>
</asp:DetailsView>
Am Я просто делаю все это не так? Я посмотрел на каждый пример, который мог найти, и мой код выглядит законным из того, что я могу сказать. Я чувствую, что должна быть какая-то простая вещь, которую я пропускаю.
Где ваше текстовое поле в вашем DetailsView? – SpiderCode
Да, именно поэтому я был так смущен. Нет TextBox, но все примеры, которые я нашел, использовали TextBox. Я думаю, это потому, что он был в режиме редактирования. Нет ли способа сделать это без TemplateField? – Ray