2016-04-22 76 views
0

我有一個綁定到一個datatable看起來像這樣一個datalist動態更改某些databound datalist項目的光標樣式?

EmpId RoomNum 
A230  201 
A235  202 
null  203 
F520  204 
null  205 

正如你可以看到一些RoomNums沒有一個EMPID。這些是將光標樣式更改爲「手」的項目。具有EmpId的數據列表項將具有「否」遊標樣式。這僅適用於數據專家。

這是我的數據列表:

<asp:DataList ID="DataListThumb" runat="server" RepeatColumns="5" > 
    <ItemTemplate> 
     <div style="padding: 8px;width:72px;height:72px"> 
     <asp:LinkButton id="LinkButton1" runat="server" OnClientClick='<%# "return ShowRoom(" + Eval("RoomNum") + ");" %>'> 
      <div style='width:72px;height:72px; background-image:url(<%# Eval("image_path") %>)'> 
       <div style="width: 72px; padding-top: 3px; overflow: hidden;"> 
        <div style="text-align: left; width:72px; float:left;"> 
         <asp:Label ID="Label1" CommandName="cmd_RoomNum" CommandArgument='<%# Eval("RoomNum")%>' 
         runat="server" Text='<%# Eval("RoomNum")%>' Font-Size="11pt"></asp:Label> 
        </div> 
       </div> 
      </div> 
     </asp:LinkButton> 
    </ItemTemplate> 
</asp:DataList> 

所以,我怎麼能動態改變光標樣式的DataList的項目?

謝謝。

回答

0

你可以通過css控制光標的樣子。你可以在你的css中定義以下兩個類。

.cursor-hand { cursor: pointer } 
.cursor-no { cursor: not-allowed } 

然後你可以有條件地將這個類應用到你的物品。這有點複雜。但是你可以定義背後在你的代碼的方法,像這樣:

public string GetStyle(string empId) 
{ 
    return empId == null ? "cursor-hand" : "cursor-no"; 
} 

,然後在某處ItemTemplate,不知道對哪一個元素。

<div class='<%# GetStyle(Eval("empId")) %>' ...> ... </div> 

我希望這能回答你的問題。

這就是說,我不確定這是否會完全達到預期的效果。僅僅因爲光標是'NO'並不意味着你不能點擊一個項目。

1

我會做兩件事情在這裏:

添加以下CSS類:

.noEmpId { 
    cursor: not-allowed; 
} 

.validEmpId { 
    cursor: pointer; 
} 

然後,我想你想你的LinkBut​​ton的光標風格,所以做這樣的事情在你的LinkBut​​ton :

<asp:LinkButton CssClass='<%# Eval("EmpId") == null ? "noEmpId" : "validEmpId" %>' id="LinkButton1"></asp:LinkButton> 

這不會讓任何人不點擊按鈕。如果你想這樣做,那麼你需要像..

<asp:LinkButton OnClientClick='<%# Eval("EmpId") == null ? "return false;" : "return ShowRoom(" + Eval("RoomNum") + ");" %>' id="LinkButton1"></asp:LinkButton> 
+0

好除了改變'啓用'屬性。 –

+0

感謝您的建議。我添加了'Enabled ='<%#Eval(「ClientId」)== null? 「false」:「true」%>''到'LinkBut​​ton',但是我得到編譯錯誤'不能將類型'字符串'轉換爲'bool'。這個問題會是什麼? 'ClientId'的類型爲'int'。 – rbhat

+0

對不起,請嘗試刪除「false」和「true」的引號。它試圖將「false」或「true」(字符串)轉換爲它無法做到的布爾。讓我知道它是否有效,我會更新迴應。至少在現在刪除它們時,我不會收到彙編錯誤。 – KSib