Acessando TextArea Dentro GridView com JQuery BlockUI

votos
0

Isso está me deixando louco!

Estou tentando acessar um TextArea dentro do controle GridView. O TextArea é apareceu quando um botão em um gridview é clicado. Por alguma razão o textarea.value sempre contém .

<asp:GridView ID=gvCategories runat=server AutoGenerateColumns=false 
            onrowcommand=gvCategories_RowCommand>

    <Columns>
    <asp:TemplateField>
    <ItemTemplate>
        <input type=button value=add comment onclick=showCommentBox() />
    </ItemTemplate>
    </asp:TemplateField>

     <asp:TemplateField>
    <ItemTemplate>
       <div id=commentBox style=display:none>

     <input type=button value=move comment input box onclick=moveComment() /> 


    <textarea id=txtComment rows=10 cols=30>
    </textarea>

    </div>   
    </ItemTemplate>
    </asp:TemplateField>

    </Columns>

    </asp:GridView>




function moveComment() {

        alert(document.getElementById(txtComment).value);  

    }

Eu adicionei este código no lado do servidor, mas o TextBox sempre retorna

  protected void gvCategories_RowCommand(object sender, GridViewCommandEventArgs e)
        {

            var row = (GridViewRow) (e.CommandSource as LinkButton).NamingContainer;
            var description = (row.FindControl(txtDescription) as TextBox).Text;
            lblComment.Text = description; 
        }
Publicado 19/05/2009 em 20:00
fonte usuário
Em outras línguas...                            


2 respostas

votos
2

@Azam - Isto está relacionado com o seu outro cargo que eu respondi. O gridview está a gerar a commentBox DIV, juntamente com todos os seus elementos filho várias vezes com o mesmo conjunto de identificações.

Corri um teste sobre isso e descobriu que cada chamada para document.getElementById("txtComment")retorno o próximo elemento correspondente no DOM com que Id até ele percorre toda a coleção de elementos correspondência, indo de volta para o primeiro e, em seguida, ele faz isso tudo de novo.

Esta é a razão pela qual você obtém um espaço em branco ao tentar acessar o valor da textarea ou caixa de texto para esse assunto.

Você precisa modificar a sua chamada para showComment()para que ele armazena uma referência ao elemento na linha dada, então quando você chamar moveComment(), ele vai trabalhar no mesmo elemento, e não apenas o próximo elemento no DOM com o mesmo ID.

Respondeu 27/05/2009 em 21:30
fonte usuário

votos
0

tente textarea.innerHTML

olhar para o seu código que seria:

alert(document.getElementById("txtComment").innerHTML);
Respondeu 19/05/2009 em 20:05
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more