2010-05-14 15 views
5

Ich habe einige Textfelder folgenden Code gridview mitasp: Gridview Textbox immer leer Wert zurück

<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> 

Ich möchte aktualisierten Werte zur Datenbank speichern, aber wenn ich den Zugriff auf Werte versuchen

string strs = ((TextBox)TwoHeadedGridView1.Rows[0].FindControl("txtStandard")).Text; 
mit

Es gibt immer den leeren Wert für alle Zeilen, Gleiche passiert für Dropdown-Liste gibt es mir ursprünglich ausgewählten Wert, dh Wert zum Zeitpunkt des Schreibens Dropdown-Box ausgewählt, gibt es keine doppelten IDs auf meinem Asp-Formular, Das ist meine erste Interaktion mit Customizing-Gridview will ich laufen machen es irgendwie,

jemand empfehlen Kann mir eine Korrektur ...

Ich habe überprüft, dass jede doppelte ID in ihm vorhanden ist oder nicht,

+0

An welchem ​​Punkt versuchen Sie, den aktualisierten Wert zu erhalten? –

+0

Ich habe Knopf, der Server-Seite Funktion ruft ruft die Kontrolle von gridviewrow – Xinus

Antwort

4

fand ich die Lösung für dieses Problem hier: http://www.eggheadcafe.com/software/aspnet/29602882/gridview--cant-get-text.aspx

Denken Sie daran, dass die Webseite im Grunde eine stateless Sache ist!

Wenn Ihr GridView Feuer ein Ereignis, Ihre Page_Load Methode führt und dann die Methode, die das Ereignis behandelt GridView ausführt. Ich kann meinen Augen immer noch nicht glauben, aber selbst wenn Sie die Werte aus der Datenquelle GridView manuell Ihren TextBoxen zuweisen, wird der Wert, den der Benutzer eingegeben hat, gelöscht, wenn die Methode GridView.DataBind ausgeführt wird.

Kurz gesagt, wenn Ihr Code wie meine ist, haben Sie diese zwei Zeilen Code in Ihre Page_Load Methode:

myGridView.DataSource = someDataSet;
myGridView.DataBind();

Um dieses Problem zu lösen, ist es wie folgt ändern: (! IsPostBack)

wenn
{
myGridView.DataSource = someDataSet;
myGridView.DataBind();
}

By the way, ich arbeite in VB.net, also bitte lassen Sie mich wissen, dass ich für Sie zu C# korrekt konvertiert. Ich möchte hören, dass dies auch für dich funktioniert!

0

Wo sind Sie versuchen, diese Werte zugreifen? Wenn Sie auf sie in der RowUpdated-Funktion zugreifen, werden die Werte leer sein. Greifen Sie auf sie während RowUpdating zu, und stellen Sie sicher, dass Sie das Update abbrechen.

+0

Ich glaube, ich habe ein identisches Problem mit einer Seite, ich arbeite an und ich bin sicher auf die Werte von der Methode, die das 'RowUpdating' Ereignis behandelt . –