2010-01-19 18 views
2

我有一個asp:DataGrid與模板列。下面是這些列中的一種:ASP.NET視圖引擎不會執行我的代碼片段

<asp:TemplateColumn> 
<ItemTemplate> 
<asp:LinkButton ID="btnDetails" 
    Runat="server" 
    CommandName="details" 
    Text="Details" 
    Font-Size="0.8em" 
    CommandArgument='a=<%# Eval("a")%>&amp;b=<%# Eval("b")%>' /> 
<...> 

當命令觸發時,CommandArgument回來未經評價 - 這是字符串a=<%# Eval("a")%>&b=<%# Eval("b")%>,因爲我想不a=5&b=6

我是怎麼做到這一點?

回答

2

呀米奇是正確的,如果你想另一種方式:

CommandArgument='<%# String.Format("a={0}&b={1}", 
    DataBinder.Eval(Container.DataItem, "a"), 
    DataBinder.Eval(Container.DataItem, "b")) %>' 

的DataBind已被調用,或這些置換將不會發生......

+0

+1。我知道必須有更好的方式! – 2010-01-19 00:59:04

+0

+1,000,000我欠你一個。我編輯了這篇文章,進行了一些語法修正。 – 2010-01-19 01:09:38

1

<%# Eval() %>是一個數據綁定表達式。您不能將它與eval表達式之外的另一個字符串連接起來。

+0

哦。有沒有其他方法可以達到我期望Eval的目標? – 2010-01-19 00:44:35

+0

一個選項(不一定是最好的選項)就是在某個基礎對象「CommandArgument」上創建一個屬性並對其進行評估。 – 2010-01-19 00:50:32

+0

我很害怕你會這麼說。現在我只綁定到一個綁定到StoredProc的DataView。會討厭觸摸該代碼... – 2010-01-19 00:52:21