C#调用前台js方法,实现滚动条跟随选中节点位置变化

    文章之初,首先将C#调用前台js的方法贴出,相当于一个固定的格式,在调用其他方法的时候只需要将方法名替换掉即可。

 ScriptManager.RegisterStartupScript(Page, this.GetType(), DateTime.Now.Ticks.ToString(), funcName + "('" + param + "');", true);

    这里的funcName即使将要调用的前台js方法。有了核心的语法之后,就是具体的实现了,先来看看前台的js脚本代码,这也是最终要执行的函数。

 function ScrollToSelectNode(obj)
    {
//        alert(obj); 
        try
        {
       
            var elem = document.getElementById(obj);
            if(elem != null )
            {
                
                var node = document.getElementById(elem.value);
                if(node != null)
                {
                 
                    //滚动被选择节点到TreeView顶部
                    node.scrollIntoView();
                   
                }
            }
        }
        catch(oException)
        {
        }
    }


    在常见的drp系统中,在页面的左侧,往往会动态生成一个树状结构,来展示物资分类的层次信息,所以完全可以把该js方法,封装到js库文件中,不同的页面只需添加js文件的引用即可,接下来,就是在C#后台来调用这个函数了:

/// <summary>
/// 执行指定函数,函数名称不包含();
/// </summary>
/// <param name="funcName">函数名称</param>
/// <param name="param">传递参数</param>
public void ExecuteFunction(string funcName, string param)
{
    funcName = CheckFuncName(funcName);
    ScriptManager.RegisterStartupScript(Page, this.GetType(), DateTime.Now.Ticks.ToString(), funcName + "('" + param + "');", true);
}


 

/// <summary>
/// 检验函数名称是否包含();
/// </summary>
/// <param name="funcName">函数名称</param>
/// <returns>函数名称</returns>
private string CheckFuncName(string funcName)
{
   if (funcName.EndsWith(";"))
     {
        funcName = funcName.TrimEnd(';');
     }
   if (funcName.EndsWith(")"))
    {
      funcName = funcName.TrimEnd(')');
    }
   if (funcName.EndsWith("("))
    {
      funcName = funcName.TrimEnd('(');
    }
    return funcName;
}



    总结:在解决问题的时候,我们首先应该站在一定的高度,看待问题,比如在学习了前端的js脚本的时候,是否想过有没有一种方法可以在后台执行前台的函数?后台中的C#可不可以写在界面上呢?如果可以的话,什么时候用?应该遵循什么样的语法结构?同样的,前台的js可不可以写到C#中呢?如果可以的话,什么样的业务最适合使用?

    另外,js并没有想象中的那么难,只要遵循一定的学习规律,有了一定的基础知识,多浏览比较好的例子,再亲自动手敲一些实例,很快就会提高的。在面对任何一个新的或者是没有学过的技术的时候,打倒自己的永远不是技术本身,而是缺乏自信的潜意识。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值