2010-05-14 4 views
5

Я добавил несколько текстовых полей в GridView, используя следующий коджерех: 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, я хочу чтобы каким-то образом сделать его запустить,

Может кто-нибудь предложить мне какие-либо исправления ...

Я проверил, что любой дубликат идентификатор присутствует в нем или нет,

+0

В какой момент вы пытаетесь получить обновленное значение? –

+0

У меня есть кнопка отправки, которая вызывает функцию на стороне сервера, которая вызывает метод find gridviewrow – Xinus

ответ

4

Я нашел решение этой проблемы здесь: 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();

Чтобы решить эту проблему, измените его следующим образом: (! IsPostBack)

если
{
myGridView.DataSource = someDataSet;
myGridView.DataBind();
}

Кстати, я работаю в vb.net, так что пожалуйста, дайте мне знать, что я преобразовал в C# правильно для вас. Я хочу услышать, что это тоже работает для вас!

0

Где вы пытаетесь получить доступ к этим значения? Если вы обращаетесь к ним в функции RowUpdated, значения будут пустыми. Получите доступ к ним в течение RowUpdating и обязательно отмените обновление.

+0

Я считаю, что у меня одинаковая проблема с страницей, над которой я работаю, и я уверен, что получаю доступ к значениям из метода, который обрабатывает событие «RowUpdating» , –