2010-05-14 31 views
5

he añadido algunos cuadros de texto a GridView usando siguiente códigoasp: textbox GridView siempre devuelven valor en blanco

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

Quiero salvar los valores actualizados en la base de datos, pero cuando trato de los valores de acceso usando

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

Siempre me devuelve el valor en blanco de todas las filas. Lo mismo ocurre con la lista desplegable me devuelve el valor seleccionado originalmente, es decir, el valor seleccionado en el momento del cuadro desplegable, no hay identificadores duplicados en mi formulario asp. Este es mi primera interacción con la personalización de gridview, quiero de alguna manera hacer que se ejecute,

¿Alguien puede sugerir cualquier corrección ...

Yo comprobé que cualquier ID duplicado está presente en ella o no,

+0

¿En qué punto está tratando de obtener el valor actualizado? –

+0

Tengo el botón de enviar que llama a la función del servidor que llama para encontrar el control de gridviewrow – Xinus

Respuesta

4

he encontrado la solución a este problema aquí: http://www.eggheadcafe.com/software/aspnet/29602882/gridview--cant-get-text.aspx

Recuerde que la página web es fundamentalmente una cosa sin estado!

Cuando sus GridView desencadena un evento, su método de Page_Load ejecuta y luego el método que controla el evento GridView ejecuta. Todavía no puedo creer lo que pienso, pero parece que incluso si asigna manualmente los valores del origen de datos GridView a sus cuadros de texto, el valor que escribió el usuario se anula cuando se ejecuta el método GridView.DataBind.

En resumen, si su código es como el mío, tienes estas dos líneas de código en el método Page_Load:

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

Para resolver este problema, cambie a la siguiente: (! IsPostBack)

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

Por cierto, yo trabajo en VB.net, así que por favor me hizo saber que me convertí al C# correcta para usted. ¡Quiero escuchar que esto también funciona para ti!

0

Cuando estás tratando de acceder a esos valores? Si está accediendo a ellos en la función RowUpdated, los valores estarán en blanco. Acceda a ellos durante RowUpdating, y asegúrese de cancelar la actualización.

+0

Creo que estoy teniendo un problema idéntico con una página en la que estoy trabajando y estoy seguro accediendo a los valores del método que maneja el evento 'RowUpdating' . –

Cuestiones relacionadas