Hola Tengo una vista de cuadrícula con un cuadro de texto en cada fila que estoy tratando de obtener el valor de en el evento RowCommand. El siguiente código funciona bien para todas las filas. Espere la primera. El valor textbox.text para la primera fila siempre está vacío.ASP.NET GridView RowCommand TextBox vacío
<asp:GridView ID="GridView1" runat="server" OnRowCommand="GridView1_OnRowCommand" >
<Columns>
<asp:TemplateField>
<ItemTemplate>
Title <%# Eval("Title")%>
<asp:TextBox ID="TextBoxAddPost" runat="server"></asp:TextBox>
<asp:LinkButton ID="LinkButtonAddPost" CommandName="AddPost" CommandArgument='<%# Eval("postId") %>' runat="server">Add Post</asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
de código subyacente:
protected void Page_Load(object sender, EventArgs e)
{
if(IsPostBack)
bindGridView();
}
protected void GridView1_OnRowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "AddPost")
{
GridViewRow row = (GridViewRow)(((LinkButton)e.CommandSource).NamingContainer);
TextBox textBox = (TextBox)row.FindControl("TextBoxAddPost");
//Empty for first row but works for all others
Debug.WriteLine("row: " + row.RowIndex + ", textBox:" + textBox.Text.Trim());
GridView1.DataBind();
}
}
El código anterior se ha simplificado con fines ilustrativos. Cada fila en realidad contiene una vista de cuadrícula infantil, de ahí que necesite el cuadro de texto en cada fila. Me temo que el enlace en page_load sobrescribe el valor del cuadro de texto, sin embargo, sin el enlace page_load, el evento rowCommand no se activa.
Me parece un poco extraño que funciona bien para todas las filas, excepto la primera.
¿Realmente desea vincular la vista de cuadrícula SÓLO si se trata de una devolución de datos, es habitual hacerlo al revés. –
Bueno, inicialmente vinculo la vista de cuadrícula a través de una función de búsqueda, pero si la vista de cuadrícula no está enlazada en la publicación, el evento rowCommand no se activa. – user346443
Ok, entonces configuré MasterPages ContentPlaceHolder EnableViewState en falso, y funcionó. – user346443