【问题标题】:DetailsView - "edit" button calling javascript functionDetailsView - 调用 javascript 函数的“编辑”按钮
【发布时间】:2012-08-24 09:04:26
【问题描述】:

我有许多 DetailsView-Controls,我用一个简单的 jQuery 函数来切换它们的可见性。粗略的轮廓:用户点击“个人”链接,包含“个人”的详细信息视图出现,而所有其他详细信息视图-<divs> 消失。所有这些<divs> 的默认状态都是隐藏的。

现在有以下问题:一旦用户按下DetailsView-Control生成的EDIT-button,页面得到一个回发,所有的div都被再次隐藏。

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

  1. 更改 jQuery 函数,需要显式隐藏 s
  2. 不要让编辑按钮自动创建,而是为每个 DV 添加一个自定义按钮(使用'onclick=javascript: ...'),这意味着我还需要添加“更新”和“取消”按钮李>
  3. 想办法将'onclick=javascript: ...'-property 添加到现有的EDIT 按钮

我当然更喜欢#3 ;),或者也许有人有更好的主意? #1 的问题是我的 jQuery 有点“不太好”,#2 的问题是我必须为相当多的 DV 创建这些按钮/功能。

提前致谢! :)


编辑;顺便说一下,这里是控制我的 jQuery sn-p

<script type="text/javascript">
    function toggleVisibility(newSection) {

        $(".details_container").not("#" + newSection).hide();
        $("#" + newSection).show();
    }
</script>

我所有要控制的 div 都属于“details_container”类。也许有两行代码可以添加某种“this-is-my-active-div”,这很容易做到?

【问题讨论】:

    标签: c# jquery asp.net detailsview


    【解决方案1】:

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

    假设它是 ImageButton 在RowDataBound事件中

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

    【讨论】:

    • 嗯,问题出在 - 我只是将我的 DV 的 AutoGenerateEditButton-property 设置为“true”(以便提供整个编辑模式功能)。我检查了我可以在 RowDataBound 事件中访问的内容,但只有 DataRows 本身,但没有 CommandRow 的迹象(创建的 EDIT 按钮所在的位置)。我会以您建议的类似方式将我的功能添加到按钮中,但如上所述,我不知道如何访问该按钮。
    • 所以问题可能出在 AutoGenerateEditButton,也许您可​​以在 DV desiner 中手动添加它,然后您将在代码中拥有它
    • 没错,正如我所指出的......实际上我可以将模板字段添加到 DV 并手动添加按钮,但是我必须自己编写整个编辑/更新/canel 功能,乍一看似乎很难。
    • 但我不是指 TemplateField,我的意思是 - 在 DV 菜单中 - 编辑字段 -> 命令字段 -> 编辑、删除... -> 添加
    • 我可以在 DV 的 Fields-Menu 中看到 AutoGeneratedEdit 按钮,是的,但我无法为按钮/链接本身分配任何类型的附加属性...不过,请尝试一下,谢谢!
    【解决方案2】:

    如果你只需要关心显示和隐藏 div,我建议设置一个全局变量来知道哪个 div 是可见的...... 例如 public ind VisibleDivId=1 //表示第一个div可见。(设为Public)

    On Edit Button Click 事件设置变量值。即如果单击了第二个 DetailsView 的 Edit,则设置 VisibleDivId=2

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

    function ShowHide()
    {
    
    var DivId=<%=VisibleDivId %>
    //Code to Show Hide Div.
    
    }
    

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-02-23
      • 1970-01-01
      • 2015-05-26
      • 1970-01-01
      • 2010-12-29
      相关资源
      最近更新 更多