none
如何判斷 listview 的 eval值 RRS feed

解答

所有回覆

  • 1.你使用的程式語言是???  
        ASP? 
        ASP.NET for C#?  
        ASP.NET for VB.NET?

    2. 你現在應該是在使用ASP.NET吧,你的寫法是ASP的,
        你第二個參考 http://social.msdn.microsoft.com/Forums/zh-CN/295/thread/2d2edd41-261d-4207-bb97-49651e14e663/    
        寫個很清楚呀 @@       

                     你那么写是执行代码,不是绑定。                
                     Code Snippet                
                     绑定的语法是<%#%>

        所以請用那篇解答裡的寫法
              <%#Convert.ToInt32(Eval("level"))==1?"管理员":"普通用户"%>

        以你的問題的話就是
             <%# Convert.ToInt32(Eval("number")) > 6 ? Eval("number").ToString() : ""%>

    3.不要使用字串來比較大小,你今天既然是數字,就請使用數字的型態來比較大小,
         if #(Eval("number").ToString) <= "4"      <= 別使用字串來比較大小呀
    2013年2月20日 上午 05:58
  • 建議放到 ListView 的 ItemDataBound 事件,來判斷與處理這些東西。

    授人以魚,三餐之需;授人以漁,終生之用。
    希望各位發問的朋友,得到的是如何釣魚的知識。之後也可以分享給別人,釣魚的知識。而不是肚子餓了,就上來討魚吃。

    若您的程式碼有SQL injection的問題,在修改完畢之前,我不願意給您任何解答。因為解決了您的程式問題,造成更大的系統漏洞問題,還不如讓程式壞掉。

    請參考:SQL injection簡介與解決方式

    常用資源參考:


    小弟的blog: In 91,wiki: my wiki

    2013年2月20日 上午 08:17
    版主
  • 回THP_柏 大

    我用的是asp.net for vb

    依您提供的<%# Convert.ToInt32(Eval("number")) > 6 ? Eval("number").ToString() : ""%> 

    是不能用, 是因為此語法是用在c# 嗎?

    若是vb呢

    因為出現https://www.dropbox.com/s/ak0ue4ap9435p3k/listview.jpg

    還請解惑

    謝謝

    2013年2月20日 上午 09:30
  • 你試過改用 iif 嗎?
    • 已標示為解答 mstone_lin 2013年2月20日 上午 10:41
    • 已取消標示為解答 mstone_lin 2013年2月20日 上午 11:14
    2013年2月20日 上午 09:37
    版主
  • 回阿尼

    sorry
    想了一下還是不對
    <ItemTemplate>     
      <% if #(Eval("number")) <= 6 then %>
             No:
             <asp:Label ID="numberLabel" runat="server" Text='<%# Eval("number") %>' />       <br />
             name:
            <asp:Label ID="nameLabel" runat="server" Text='<%# Eval("name") %>' />    <br />
    <% End if  %>
    </ItemTemplate>

    我知道這是asp的邏輯,我是用 asp.net(vb)
    因為在後端 大於6之後我加入了"空欄位"補足5的倍數( db有6筆,pagesize=5,補滿10筆)
    如果用<%#DoSomething(Eval("number"))%> 或   <%#iif(Eval("number") < 6, "No: ", "")%>
    會出錯因  <% #iif ' ' <6,"no:","")%>是不行的

    於是在後端加入  Dtb.Rows.Add(7, "")
    但這行 <asp:Label ID="numberLabel" runat="server" Text='<%# Eval("number") %>' />   又會顯示
    我想作到的是 當eval("number") >6 之後,全部不顯示
    該怎麼寫呢?
    謝謝


    • 已編輯 mstone_lin 2013年2月20日 上午 11:42
    2013年2月20日 上午 10:33
  • 回 91

    我改用  <%#DoSomething(Eval("number"))%>
    後端為:
    Public Function DoSomething(ByVal value As Integer) As String
            If value < 4 Then
                Return "No:"
            Else
                Return ""
            End If
        End Function

    是可以,但是今天若有多個[Label], 每個傳回值都不同,變成要寫多個 function
    有什麼辦法嗎?
    又...如果是空值
    if  ' ' < 4   不成立
    又該怎麼改?

    謝謝


    • 已編輯 mstone_lin 2013年2月20日 上午 11:47
    2013年2月20日 上午 10:38
  • 啊不是建議您放在 ItemDataBound 嗎?

    您連第一步都還沒做,要怎麼往後走呢?


    授人以魚,三餐之需;授人以漁,終生之用。
    希望各位發問的朋友,得到的是如何釣魚的知識。之後也可以分享給別人,釣魚的知識。而不是肚子餓了,就上來討魚吃。

    若您的程式碼有SQL injection的問題,在修改完畢之前,我不願意給您任何解答。因為解決了您的程式問題,造成更大的系統漏洞問題,還不如讓程式壞掉。

    請參考:SQL injection簡介與解決方式

    常用資源參考:


    小弟的blog: In 91,wiki: my wiki

    2013年2月20日 上午 11:12
    版主
  • 回91大

    小弟剛接觸asp.net

    很多還不懂,所以還不知如何從ItemDataBound內作判斷?

    只能直覺式想法...^^"

    還請賜教

    謝謝

    2013年2月20日 上午 11:56
  • 參考看看MSDN吧:ListView.ItemDataBound 事件

    範例中就有用到findcontrol, e.Item.DataItem, 判斷式, control的處理,應該就都是你要的了。


    授人以魚,三餐之需;授人以漁,終生之用。
    希望各位發問的朋友,得到的是如何釣魚的知識。之後也可以分享給別人,釣魚的知識。而不是肚子餓了,就上來討魚吃。

    若您的程式碼有SQL injection的問題,在修改完畢之前,我不願意給您任何解答。因為解決了您的程式問題,造成更大的系統漏洞問題,還不如讓程式壞掉。

    請參考:SQL injection簡介與解決方式

    常用資源參考:


    小弟的blog: In 91,wiki: my wiki

    2013年2月20日 下午 02:09
    版主
  • 要用ASP.NET 請放棄ASP的寫法

    在ASP.NET裡有所謂的控制項(以web form的開發方式),這些控制項具有一些屬性和方法,可以讓您使用

    建議您好好去找一本書來看看

    上面91版主提到的,就是ListView控制項的其中一個事件,可以達到您的需求


    軟體開發領域裡區區一個迷途工程師
    MyBlog: http://www.dotblogs.com.tw/ian/
    開發ASP.NET您要瞭解的基楚

    2013年2月20日 下午 06:26
    版主
  • 回 91 & No.18

    我研究了一下 ListView.ItemDataBound 事件

    裡面是提到 如何處理listview 的 control 值 [number]

    也就是這行   <asp:Label ID="numberLabel" runat="server" Text='<%# Eval("number") %>' /> 

    但無法處理在這之前的  No: ,因為  No: 並不是資料庫裡面的字串

              No:
             <asp:Label ID="numberLabel" runat="server" Text='<%# Eval("number") %>' />       <br />
             name:
            <asp:Label ID="nameLabel" runat="server" Text='<%# Eval("name") %>' />    <br />

    煩請賜教

    謝謝

    2013年2月21日 上午 12:18
  • 呃...啊你的"No:",如果也放到Label裡面,那不就能控制了...

    授人以魚,三餐之需;授人以漁,終生之用。
    希望各位發問的朋友,得到的是如何釣魚的知識。之後也可以分享給別人,釣魚的知識。而不是肚子餓了,就上來討魚吃。

    若您的程式碼有SQL injection的問題,在修改完畢之前,我不願意給您任何解答。因為解決了您的程式問題,造成更大的系統漏洞問題,還不如讓程式壞掉。

    請參考:SQL injection簡介與解決方式

    常用資源參考:


    小弟的blog: In 91,wiki: my wiki

    2013年2月21日 上午 11:16
    版主
  • 你可以在ItemDataBound中直接處理No:啊 ,反正在這個事件您愛輸出什麼愛,做什麼都由您自行控制的

    先動手做看看吧


    軟體開發領域裡區區一個迷途工程師
    MyBlog: http://www.dotblogs.com.tw/ian/
    開發ASP.NET您要瞭解的基楚

    2013年2月23日 上午 06:12
    版主
  • 因為一開始你並沒說是用哪種程式語法,

    所以我是給你C#語法,阿尼大給的建議則是VB.NET的語法

    此外,基本上你都可以用ItemDataBound來控制呀!

    了不起你就再加一個Label 來放置所謂的 "No:"的文字,之後除了可以控制你的numberLabel 的數字外,也可以控制新Label的Visible應該就可以了吧!?

    所以目前這個問題你解決得怎樣了呢?

    2013年2月27日 上午 02:18
  • DataBinding Expression還可以這樣用

    http://www.dotblogs.com.tw/mis2000lab/archive/2008/12/29/databinding_expression_1229.aspx

    <%  ABC %>

    ABC是您自己寫得Function

    裡面就可以作研判的動作,把結果丟到畫面上

    我的書 與 ASP.NET教學網站 http://www.dotblogs.com.tw/mis2000lab/

    2013年2月28日 上午 02:24
  • 我研究了一下 ListView.ItemDataBound 事件

    裡面是提到 如何處理listview 的 control 值 [number]

    ItemDataBound事件的用法沒這麼簡單

    初學者只看msdn是學不會(以我自己為例,我花了不少時間去練,才枉然大悟)

    我以GridView為例,類似的事件名為RowDataBound

    用各種範例來反覆說明(這是我以前學會的歷程與範例,應該對您有幫助)

    要花一點時間才能學會

    請看    http://www.dotblogs.com.tw/mis2000lab/Tags/RowDataBound/default.aspx

      

    這個範例也可以用上面我介紹的方法來解,DataBinding Expression

      

    能解決,就是好方法,您多試試看


    我的書 與 ASP.NET教學網站 http://www.dotblogs.com.tw/mis2000lab/




    2013年2月28日 上午 02:27
  • 綜合您之前的提問, 大致拼湊出您可能想要的效果, 請參考我這篇解決方法,看看是否適用

    http://www.allenkuo.com/GenericArticle/view1413.aspx

    2013年3月1日 上午 12:19