DetailsView - 调用javascript函数的“编辑”按钮

时间:2012-08-24 09:04:27

标签: c# jquery asp.net detailsview

我有许多DetailsView-Controls,其可见性我用简单的jQuery函数切换。粗略轮廓:用户按下“PERSONAL”链接,并显示包含“PERSONAL”的DetailsView,而所有其他DetailsView - <divs>消失。隐藏所有这些<divs>的默认状态。

现在存在以下问题:一旦用户按下DetailsView-Control的生成的EDIT按钮,该页面将获得回发,并且所有div都会再次隐藏。

我看到以下可能性(也许你看到更多?):

  1. 更改jQuery函数,即需要显式隐藏的
  2. 不要让编辑按钮自动创建,而是为每个DV添加一个自定义按钮(带'onclick=javascript: ...'),这意味着我还需要添加“UPDATE”和“CANCEL”按钮
  3. 找到一种方法将'onclick=javascript: ...' - 属性添加到现有的EDIT按钮
  4. 当然我更喜欢#3;),或者有人有更好的主意? #1的问题是我的jQuery有点'不太好',#2的问题是我必须为相当多的DV创建这些按钮/功能。

    提前致谢! :)


    编辑;顺便说一句,这里是控制我的jQuery片段

    <script type="text/javascript">
        function toggleVisibility(newSection) {
    
            $(".details_container").not("#" + newSection).hide();
            $("#" + newSection).show();
        }
    </script>
    

    我要控制的所有div都使用“details_container”类。也许有两行代码可以添加某种“this-is-my-active-div”,这可以轻松完成吗?

2 个答案:

答案 0 :(得分:0)

你能为这个按钮提供aspx代码吗?

假设它是ImageButton 在RowDataBound事件

 ((ImageButton)e.Row.Cells[0].Controls[0]).Attributes.add("onclick", "return YourFunction();");

答案 1 :(得分:0)

如果你只需要关心显示和隐藏Div,我建议设置一个全局变量来知道哪个div是可见的.... 例如 public ind VisibleDivId = 1 //这意味着第一个div是可见的(将其设置为公共)

在编辑按钮上单击事件设置变量值.i.e。如果单击编辑第二个DetailsView,则设置VisibleDivId = 2

在Body Load中调用Javascript函数来隐藏Divs

function ShowHide()
{

var DivId=<%=VisibleDivId %>
//Code to Show Hide Div.

}

<强>否则 您也可以从编辑事件中调用Javascript函数

Page.ClientScript.RegisterStartupScript(GetType(), "Key", "ShowHide();", true);