/ / Precisa de um identificador de postagem de um controle de hiperlink dinâmico clicado no ajax - asp.net, postback, hyperlink

Precisa de um identificador de postback de um controle de hiperlink dinâmico clicado em ajax - asp.net, postback, hyperlink

O cenário...Eu tenho uma lista de controles de hiperlink dinâmico em um painel ajax vinculado diretamente a um documento WORD localizado em um compartilhamento. Clicar em um link abre o lado do cliente WORD (eu defino a associação do arquivo para fazer isso, para que o navegador IE não tente abri-lo).

Os LinkButtons não funcionam porque não funcionamlink direto para o documento a partir do navegador e não quero automação de servidor ou activex, pois quero que cada cliente abra o documento usando sua própria caixa como se tivesse simplesmente clicado no próprio documento.

Mas preciso alterar uma imagem em um controle de imagemuma vez que eles clicaram no hiperlink. Em outras palavras, eu preciso que o link fique no topo de um controle que causa uma postagem para que eu possa acessar o ID dos controles de postagem e fazer minhas coisas. Também estou tentando evitar scripts do lado do cliente, embora tenha certeza de que possa haver uma maneira complicada de fazer isso.

Aqui está o código no loop que cria o link dinâmico. Comecei com apenas o controle de hiperlink, então esse código está atrapalhando a adição de um hiperlink a um rótulo, é por isso que está sendo exibido da seguinte maneira:

Label lblWordLink = new Label();
HyperLink hrefLetter = new HyperLink();
hrefLetter.Text = items.letterName;
hrefLetter.NavigateUrl = folderForPackageLetters + items.letterName + wordDocExtension;
hrefLetter.ID = "standardLettersHref_" + items.letterName;
lblWordLink.Text = "<a href="" + hrefLetter.NavigateUrl.ToString() + "">" + items.letterName + "</a>" ;
tRow.Cells[1].Controls.Add(lblWordLink);

Estou procurando uma maneira de deixar o link abrir odoc e ao mesmo tempo postback. Existe uma maneira de colocar o controle de link em cima de outro controle, de modo que o link apenas faça o link e o controle abaixo cause uma postagem?

32U

Corrigido: a resposta deu a pista. No servidor, durante a criação do controle dinâmico, eu fiz:

HyperLink hrefLetter = new HyperLink();
hrefLetter.ID = "standardLettersHref_" + items.letterName;
hrefLetter.Text = items.letterName;
hrefLetter.NavigateUrl = folderForPackageLetters + items.letterName + wordDocExtension;
hrefLetter.Attributes.Add("OnClick", "letterHrefClick("" + items.letterName + wordDocExtension + "")");
tRow.Cells[1].Controls.Add(hrefLetter);

no lado do cliente, coloquei um valor em um controle oculto dentro do painel ajax quando o controle de hiperlink foi clicado e o envio forçado:

function letterHrefClick(link) {
//alert(link);
form1.hdnLetterClick.value = link;
form1.submit();
}

Após o envio, de volta ao servidor, obtive o valor no evento Page_Load:

 string x = hdnLetterClick.Value;

legais!

atualizar... Uma maneira ainda melhor de fazer isso ... no postback javascript, use:

__doPostBack("hdnLetterClick", "somevalue");

depois, no codebehind no Page_Init você pode fazer (não para botão ou imgbutton):

string postbackControlID = Request.Params.Get("__EVENTTARGET");
string postbackArgument = Request.Params.Get"__EVENTARGUMENT");

para obter o que você precisa. Isso é melhor se você estiver lidando com controles dinâmicos para poder controlar o estado durante a recreação de controle.

Respostas:

1 para resposta № 1

Se você der ao seu link um onclick atributo, essas ações javascript também devem ser executadas quando o link é selecionado.