我尽量把问题描述的清晰一点...
C#写了一个[上一页][下一页]的翻页控件,控件中,有1个HtmlInputHidden变量submitBySelf,默认值为0,目的是如果是0则为第一页,否则就不是第一页
比如说是图书归还页面,当前是第二页,选中页面上某个记录后,点击"归还"
submitBySelf值变为1.
页面上JS代码
function gotoPage(thePage)
{
document.getElementById('pageController:submitBySelf').value="1";
}当页面上只有一个翻页控件的时候是没有问题的.
现在页面上放了2个翻页控件,上面一个是pageController,下面一个是pageController2.
JS
function gotoPage(thePage)
{//资产
document.getElementById('pageController:submitBySelf').value="1";
}
function gotoPage2(thePage)
{//图书
document.getElementById('pageController2:submitBySelf').value="1";
}.CS中
btnReturn.Attributes["onclick"]="gotoPage2(" + bookPageInfo.getCurrentPage()  + ");";
btnReturn.Attributes["onclick"]="gotoPage(" + assetPageInfo.getCurrentPage()  + ");";
现在问题是
这两个btnReturn.Attributes....
如果只用一个的话都是正确的,可是2个一起用的时候,下面那个submitBySelf的值点"归还"就变为0了..
这是为什么啊???
也请各位遇到过的高手们赐教

解决方案 »

  1.   

    neng jie jue wen ti de dou shi wo da ge .
    :)
      

  2.   

    呵呵,找错地方了,邹健只在SQL Server区活动!
      

  3.   

    js不对.在后台生成js时strScript = "........ document.getElementById('"+ submitBySelf.ClientID + "').value='1'";
      

  4.   

    照你的思路,如果放3个控件就要手工在页面上写function gotoPage3(thePage){}了?基本上我验收控件都是放被验收控件的两个实例,以及相当复杂的一个其它控件,然后测试它们各自的操作会不会影响其它控件的功能状态的。你的问题看上去内容挺多,但是范的设计错误太初级,例如一个控件怎么能要求使用者再去手动写 gotoPageX 函数定义?一个控件应该只要将控件加入相应的地方,设置它的属性,就可以直接用了。我建议你不会走先不要学人跑。把你的控件的功能做最大限度的简化,然后按照我上面说的验收方法,从最简单的控件设计原则开始“摸索”。
      

  5.   

    function gotoPage3(thePage){}
    这个并不是必要的,只是这里问题出在这,我拿出来问一下
      

  6.   

    上面说的不行吗?js封装在控件中,一个js就够了.用ClientID作为参数
      

  7.   

    应该是btnReturn加了两次onclick事件的问题,这样试一下
    JS
    function gotoPage(thePage)
    {//资产
    document.getElementById('pageController:submitBySelf').value="1";
    document.getElementById('pageController2:submitBySelf').value="1";
    }.CS中
    btnReturn.Attributes["onclick"]="gotoPage(" + assetPageInfo.getCurrentPage() + ");";
      

  8.   

    我不太明白什么意思啊?
    控件中也有这个
    function gotoPage(thePage)
    {
    document.getElementById('pageController:submitBySelf').value="1";
    }
    function gotoPage2(thePage)
    {
    document.getElementById('pageController2:submitBySelf').value="1";
    }
    用ClientID作为参数是什么意思?
      

  9.   

    pageController如果是服务器端控件则用
    <%=pageController:submitBySelf.ClientID%>
    代替
    即function gotoPage(thePage)
    {
    document.getElementById('<%=pageController:submitBySelf.ClientID%>').value="1";
    }
      

  10.   

    string Key = this.GetType().ToString();        if (!this.Page.IsClientScriptBlockRegistered(Key))
            {
                 string sScript = @"
    function gotoPage(thePage)
    {
        document.getElementById('"+ submitBySelf.ClientID +@"').value='1';
    }";
      

  11.   

    上面没写完
     string Key = this.GetType().ToString();        if (!this.Page.IsClientScriptBlockRegistered(Key))
            {
                 string sScript = @"
    function gotoPage(thePage)
    {
        document.getElementById('"+ submitBySelf.ClientID +@"').value='1';
    }";
                 this.Page.RegisterClientScriptBlock(Key, sScript);
            }
      

  12.   

    用type 作key,就是保证这个控件在同一个页面上不管有多个type都是相同的,所以保存key相同因为也可保证js只生成一次
      

  13.   

    不懂....我太对不起你了
    this.GetType().ToString();
    this.Page.IsClientScriptBlockRegistered(Key))
    这些函数是系统的吗?怎么.不出来啊- -string sScript = @"
    function gotoPage(thePage)
    {
        document.getElementById('"+ submitBySelf.ClientID +@"').value='1';
    }";
    还有这个@都是什么意思啊?