Я добавил некоторые текстовые поля к gridview, использующему после кода
<asp:TemplateField HeaderText="STD<br/>ID">
<ItemStyle BackColor="LightBlue" />
<ItemTemplate>
<div style="font-size:xx-small; overflow:hidden;">
<asp:TextBox ID="txtStandard" EnableViewState="true" Height="10" Font-Size="XX-Small" Width="50" Text='<%# bind("STANDARD_ID") %>' runat="server"></asp:TextBox>
<asp:AutoCompleteExtender ID="AutoCompleteExtenderDemo" runat="server"
TargetControlID="txtStandard" ServiceMethod="GetCompletionList"
MinimumPrefixLength="1" CompletionInterval="1000"
EnableCaching="true" CompletionSetCount="20">
</asp:AutoCompleteExtender>
</div>
</ItemTemplate>
</asp:TemplateField>
Я хочу сохранить обновленные значения к базе данных, Но когда я пытаюсь получить доступ к использованию значений
string strs = ((TextBox)TwoHeadedGridView1.Rows[0].FindControl("txtStandard")).Text;
Это всегда возвращает меня пустое значение для всех строк, То же самое происходит для выпадающего списка, это возвращает меня первоначально выбранное значение т.е. значение, выбранное во время записи выпадающего поля, нет никакого дублирующегося идентификационного подарка на моей форме asp, Это - мое первое взаимодействие с настройкой gridview, я хочу так или иначе заставить его работать,
Может кто-либо предлагать меня любое исправление...
Я сделал проверенный, что любой дублирующийся идентификатор присутствует в нем или нет,
Я нашел решение этой проблемы здесь: http://www.eggheadcafe.com/software/aspnet/29602882/gridview--cant-get-text.aspx
Помните, что веб-страница, по сути, не имеет состояния!
Когда ваш GridView
запускает событие, выполняется ваш метод Page_Load
, а затем , затем метод, который обрабатывает событие GridView
. Я все еще не могу поверить своим глазам, но кажется, что даже если вы вручную присвоите значения из источника данных GridView
своим текстовым полям, значение, введенное пользователем, будет уничтожено, когда GridView .DataBind
метод выполняется.
Короче говоря, если ваш код похож на мой, у вас есть эти две строки кода в методе Page_Load
:
myGridView.DataSource = someDataSet;
myGridView.DataBind ();
Чтобы решить эту проблему, измените его на следующее:
if (! IsPostBack)
{
myGridView.DataSource = someDataSet;
myGridView.DataBind ();
}
Между прочим, я работаю в VB.net, поэтому, пожалуйста, дайте мне знать, что я правильно преобразовал для вас C #. Я хочу услышать, что это работает и для вас!
Где вы пытаетесь получить доступ к этим значениям? Если вы обращаетесь к ним в функции RowUpdated
, значения будут пустыми. Получите доступ к ним в функции RowUpdating
и убедитесь, что обновление отменено.