2011-01-10 54 views
0

我在一個asp.net listview中,在itemtemplate中。asp.net(4)listview給我帶來生成id的麻煩

<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> 

現在我有兩個問題。 首先跨度:我想在函數openDiv()中的asp:面板的clientID,所以我可以創建一些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 起初我使用此代碼爲ID的產生: 「身份識別碼<%#的eval(」 ID 「)%>」,但沒有鍛鍊要麼...

PS 我「M總是讓在麻煩使用eval和<%#%>的時候,所以它可能是一些愚蠢的事(我希望)

+0

您的Eval格式不正確的問題是由於您使用雙引號來包裝Eval和Eval中的項目名稱。這將工作︰Text ='<%#Eval(「Translation」)%>'通知我用單引號包裝Eval,同時保持雙引號 – 2011-01-10 14:19:19

回答

1

正如我的評論和jamietre規定來解決,你需要的代碼更改綁定的問題:

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

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

至於用的onclick問題如果你只是刪除runat="server"部分,它應該如你所願地工作。我不知道爲什麼,但似乎添加這會導致控件編碼onclick屬性。

如果您需要spanat上的runat =「server」,那麼我會嘗試找到另一個解決方案,但是沒有保證。

2

在第一部分,你一定要使用綁定表達式:

<%# EditItemDiv.ClientID %> 

<%=%> scriptlet將沒有每個項目的上下文。我假設你是「解釋」你說你嘗試過的語法,那麼之前沒有工作的是什麼?

「服務器標記格式不正確」是因爲您試圖在雙引號內使用雙引號。將外部更改爲單引號:

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

基本上,您不能嵌套類似的引用類型。內聯腳本通常會要求您使用雙引號,因爲單引號在c#中有不同的含義,但您可以使用double或single作爲標記參數引用。結果是,如果您需要內聯腳本,請使用單引號來包裝標記參數,這樣您就可以在其中使用雙引號。

如果您在輸出中需要更多單引號,例如要呈現JavaScript參數,請使用&#39;。如果你想渲染雙引號,你也可以使用&#34;

OnClientClick='openDiv(&#39;EditItem(<%# Eval("something") %>&#39;);' 
+0

我使用這個: – Michel 2011-01-10 14:29:21

+0

,但我已經修復了報價/雙引號,謝謝!我認爲問題是,在onclick事件中,我需要3種類型的引號:「onclick = openDiv('EditItem <%#Eval(」Texttranslations_key「)%>')」因爲我需要在onclick之前引號,EditItem之前和在eval語句 – Michel 2011-01-10 14:31:54