Почему LinkButton не работает с таблицей как ее содержимым? - PullRequest
1 голос
/ 16 июля 2010

Используя ASP.NET 3.5, вы можете создать LinkButton, а затем определить содержимое внутри него.Он отлично работает, если у меня есть теги div или любой другой текст или что-то еще, но если я использую таблицу, то по какой-то причине клик не отправляется обратно.Это должно привести вас к Google (вы получите ошибку там, но она все равно должна появиться), например:

<asp:LinkButton ID="lbTest" PostBackUrl="http://www.google.com" runat="server">
            <table>
                <tr>
                    <td>Test</td>
                    <td>col2</td>
                    <td>col3</td>
                </tr>
            </table>
        </asp:LinkButton>

Я мог бы обойти это, построив «таблицу» с div, я думаю, но яненавижу форматирование с помощью divs.

Ответы [ 4 ]

3 голосов
/ 16 июля 2010

Вы не можете делать то, что пытаетесь сделать, потому что тег table не позволяет кликам a нажимать, даже если они выглядят так, как они. Я не думаю, что это допустимое использование тега a.

Вы можете обойти это, добавив клиентскую сторону в таблицу, а затем вручную выполнить перенаправление, используя javascript.

Кроме того, почему вы используете LinkButton вместо обычного a тега? Я предполагаю, что вы хотите сослаться на что-то в вашем приложении. Если это так, вам нужно будет также сгенерировать вызов __DoPostBack в своем javascript для имитации поведения LinkButton. Для этого используйте следующий код для генерации правильного JavaScript:

string javascriptToDoPostBack = Page.GetPostBackEventReference(yourLinkButton); 
2 голосов
/ 16 июля 2010

Таблица является блочным элементом, а ссылка является встроенным элементом, поэтому вы не можете поместить таблицу в ссылку.

Браузер попытается исправить структуру, возможно, переместив таблицу за пределы ссылки, поэтому вы получите таблицу, которая не связана, и ссылку без содержимого.

Если вы хотите поместить элементы внутри ссылки, они должны быть встроенными элементами, например теги span Затем вы можете использовать CSS, чтобы превратить и ссылку, и элементы внутри нее в блочные элементы, но структура должна иметь смысл как до, так и после применения CSS.

1 голос
/ 28 декабря 2010

Я думаю, это проблема IE.на FF или GC этого не происходит.

Это решение может помочь:

<script type="text/javascript">
  function SeachClick()  {
        <%=Page.GetPostBackEventReference(LinkButtonSearch)%>        
  }   

<asp:LinkButton ID="LinkButtonSearch" runat="server" OnClick="LinkButtonSearch_Click"
                            CausesValidation="false">
< table border="0" cellspacing="0" cellpadding="0" style="height: 22px;" onclick="SeachClick()" >
<tr>
        <td class="but_left">
</td>
<td class="but_center">
  <asp:Literal runat="server" meta:resourceKey="SearchButtonText" />
</td>
<td class="but_mag">
</td>
 <td class="but_right">
</td>


</tr>
</table>

0 голосов
/ 16 июля 2010

Я почти уверен, что вы не можете сделать это со столом.

...