asp: текстовое поле GridView всегда возвращает пустое значение - PullRequest
5 голосов
/ 14 мая 2010

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

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

Я проверил наличие дублированного идентификатора или нет,

Ответы [ 2 ]

4 голосов
/ 20 мая 2010

Я нашел решение этой проблемы здесь: 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 #. Я хочу услышать, что это работает и для вас!

0 голосов
/ 14 мая 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...