c#
  • asp.net
  • 2012-03-05 42 views 1 likes 
    1

    我正在使用TemplateField將一個額外的「計算」列添加到綁定到數據庫中的表格的gridview。我得到這個奇怪的錯誤,我不知道如何開始調試它。我可能會用<%#語法做錯誤/不可行,如果是這樣,請讓我知道什麼。我不完全理解它。新的<%# - 奇怪的錯誤

    代碼:

    <asp:TemplateField> 
        <ItemTemplate> 
        <asp:Label runat="server" Text='<%# Math.Round(decimal.Parse((((int.Parse(Eval("Num1").ToString())) * 36)/(235 * int.Parse(Eval("Num2").ToString()))).ToString()), 0); %>'></asp:Label> 
        </ItemTemplate> 
    </asp:TemplateField> 
    

    錯誤: CS1525:無效的表達術語 ''

    有一個逗號......但其Math.Round的第二個參數。或者我正在做一些不可行的事情嗎?此外,Math.Round行不會在代碼隱藏中指示任何錯誤(我的括號應該很好)。

    +0

    刪除分號;並嘗試 – PraveenVenu 2012-03-05 14:18:50

    +0

    它對我來說看起來不錯。它看起來像是一個相當混亂的文字。如果正在計算Num1和Num2,也許最好計算這個值。這樣,你可以只說'<%#Eval(「ComputedValue」)%>' – Narnian 2012-03-05 14:20:10

    +0

    @Narnian Num1和Num2是GridView綁定到的數據庫表中的列。 – novacara 2012-03-05 14:22:52

    回答

    1

    它對我來說看起來不錯。但是,它看起來像是一個相當混亂的文本行。如果Num1和Num2是數據庫中的列,那麼您可以在表示該表的類上添加一個屬性。

    因此,在定義Num1和Num2的位置旁邊,定義另一個屬性 - 不是表示數據庫中的列,而是計算數據庫中的值。

    這將從一個特定頁面中移除計算,因此如果您必須在某處再次使用它,則可以僅引用該屬性。

    或者,你可以參考後面上你的代碼的方法...

    <%# GetComputedValue((int)Eval("Num1"), (int)Eval("Num2")) %> 
    
    protected string GetComputedValue(int num1, int num2) 
    

    我喜歡這個主意屬性更好,不過,因爲它是可重複使用的。

    +0

    謝謝。實際上我有另一個列需要是一個複雜的if語句,所以方法後面的代碼會更好地處理所有事情。再次感謝! – novacara 2012-03-05 14:47:17

    6

    在數據綁定表達式中,您僅限於單個語句。放下「;」。我相信這個陳述本身就是格式良好的。

    +0

    我得到';'預計 – novacara 2012-03-05 14:29:10

    +0

    爲將來參考任何我得到';'因爲我們需要一個ToString(),因爲它進入了一個Label。不是最有用的錯誤。 – novacara 2012-03-05 14:48:26

    2

    如果你真的需要做舍入等功能,只需在代碼中創建一個名爲Round的公共函數,並從數據綁定表達式中調用它。這樣,您就不會在逗號中遇到任何問題,並且可以將所有邏輯放在一個位置,以便稍後保持一致。

    +0

    好主意!有沒有辦法從代碼隱藏的方法訪問數據綁定變量?你看到我是「Eval」 - 上面的Num1和Num2? – novacara 2012-03-05 14:20:50

    相關問題