2016-04-22 39 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