使用gridview时如何在项目模板中调用javascript函数

时间:2010-07-28 11:10:34

标签: c# javascript asp.net jquery gridview

我正在尝试调用一个javascript函数,它将在控件加载时设置控件的前景色和背景色

但是这个功能并没有提高。

<ItemTemplate>
      <div onload= "invertColor(this,'<%# Eval("ColorCode") %>')">
           <%# Eval("ColorCode") %>
      </div>
</ItemTemplate>

这是我的javascript

    function invertColor(sender, backColor) {
        alert('hi');
//        alert(backColor.toString());
//        if (backColor != '') {
//        
//            sender.css('background-color', backColor);
//            backColor= backColor.substr(1, 6);
//            foreColor = numberToHex(255 - parseInt(backColor.substr(0, 2), 16))
//            + numberToHex(255 - parseInt(backColor.substr(2, 2), 16))
//            + numberToHex(255 - parseInt(backColor.substr(4, 2), 16));
//            sender.css('color', "#"+foreColor)
//        }
    }

4 个答案:

答案 0 :(得分:1)

你可以在div之后立即执行它,如果元素有某种方式来解决它,比如和id或css类。使div成为服务器控件将为集合中的每个项目生成唯一的id。

<ItemTemplate> 
      <div runat="server" id="dummy"> 
           <%# Eval("ColorCode") %> 
      </div> 
    <script> invertColor('<% =dummy.ClientID %>', '<%# Eval("ColorCode") %>'); </script>
</ItemTemplate> 

这里我将第一个参数更改为字符串而不是对象。在invertColor内,您可以使用id字符串来获取对您认为合适的元素的引用。

答案 1 :(得分:0)

是的,这不会起作用,因为div上没有onload事件。为什么不设置合适的CSS类?

答案 2 :(得分:0)

使用内嵌式

<ItemTemplate> 
  <div style= "color:<%# Eval("ColorCode") %>"> 
       <%# Eval("ColorCode") %> 
  </div> 
</ItemTemplate> 

可能是另一种解决方案。

答案 3 :(得分:0)

您也可以尝试这样。

<asp:TemplateField HeaderText="Link"> 
 <ItemTemplate> 
    <asp:HyperLink runat="server" ID="HLink" 
        Text='<%# Eval("FirstName").ToString() + " " + Eval("LastName").ToString()%>' 
        NavigateUrl='<%# "javascript:OpenPopup(" + "&#39;" + Eval("EmpId") + "&#39;);" %> ' />
 </ItemTemplate> 
</asp:TemplateField>