asp.net (4) listview доставляет мне проблемы с генерацией идентификаторов - PullRequest
0 голосов
/ 10 января 2011

Я нахожусь в списке asp.net, в itemtemplate.

<asp:ListView runat="server" ClientIDMode="Predictable" ClientIDRowSuffix="Texttranslations_key"ID="lvwTextitems">

Это мой код в itemtemplate:

<span runat="server" onclick="openDiv('<%= EditItemDiv.ClientID%>')" style="width: 450px;"><%# Eval("Translation")%></span>
<asp:panel  runat="server" id="EditItemDiv" style="display:none">
<asp:TextBox runat="server" ID = "EditItemArea" TextMode ="MultiLine" Rows="12" Columns="50" Text="<%# Eval("Translation")%>">
</asp:TextBox>

Теперь у меня две проблемы.Сначала span: я хочу clientID панели asp: в функции openDiv (), чтобы я мог создать некоторые функции show hide.Тем не менее, я получаю это как результат:

<span onclick="openDiv(&#39;&lt;%= EditItemDiv.ClientID%>&#39;)" style="width: 450px;">

мой код отображается не как код, а как простой текст, и я не знаю почему?

Во-вторых, эта строка получаетмне ошибка времени выполнения (тег сервера сформирован неправильно):

<asp:TextBox runat="server" ID = "EditItemArea" TextMode ="MultiLine" Rows="12" Columns="50" Text="<%# Eval("Translation")%>">

Может ли кто-нибудь мне помочь?

ps Сначала я использовал этот код для генерации идентификаторов: "myid <% # Eval ("Id")%> ", но это тоже не сработало ...

ps У меня всегда возникают проблемы при использовании Eval и <% #%>,так что это, наверное, какая-то глупость (надеюсь)

Ответы [ 2 ]

2 голосов
/ 10 января 2011

Для первой части вам обязательно нужно использовать выражение привязки:

<%# EditItemDiv.ClientID %>

Скриплет <% =%> не будет иметь контекста для каждого элемента.Я предполагаю, что вы «перефразировали» синтаксис, который, как вы сказали, вы пытались, так что же раньше не работало?

«Серверный тег неправильно сформирован», потому что вы пытаетесь использовать двойные кавычки внутри двойныхцитаты.Измените внешние на одинарные кавычки:

Text='<%# Eval("Translation")%>'>

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

Если вам нужны дополнительные одинарные кавычки в выходных данных, например, дляотрендерить параметр javascript, просто используйте &#39;.Вы также можете использовать &#34;, если хотите рендерить двойные кавычки.

OnClientClick='openDiv(&#39;EditItem(<%# Eval("something") %>&#39;);'
1 голос
/ 10 января 2011

Как указано в моем комментарии и автором jamietre, чтобы исправить проблему с привязкой, вам нужно изменить код с:

Text="<%# Eval("Translation")%>"

до

Text='<%# Eval("Translation")%>'

Что касается проблемы, связанной с щелчком пролета, он должен работать так, как вы хотите, если вы просто удалите часть runat="server". Я не уверен, почему, но кажется, что добавление этого вызывает элементы управления для кодирования свойства onclick.

Если вам нужен runat = "server" на промежутке, я попытаюсь найти другое решение, но нет никаких гарантий.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...