2016-01-25 34 views
0

我在我的aspx页面中使用Kedo UI Window,如下所示。 回发后,窗口内的服务器控件丢失它的值。我知道剑道是客户端库&是不负责我的服务器端控件的状态管理,但为什么它导致他们失去了他们的价值?Kendo UI窗口使服务器控制松动值

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Test3.aspx.cs" Inherits="Test3" %> 

<!DOCTYPE html> 
<html> 
<head> 
    <meta charset="utf-8" /> 
    <title>Kendo UI Snippet</title> 

    <link rel="stylesheet" href="http://kendo.cdn.telerik.com/2016.1.112/styles/kendo.common.min.css" /> 
    <link rel="stylesheet" href="http://kendo.cdn.telerik.com/2016.1.112/styles/kendo.rtl.min.css" /> 
    <link rel="stylesheet" href="http://kendo.cdn.telerik.com/2016.1.112/styles/kendo.silver.min.css" /> 
    <link rel="stylesheet" href="http://kendo.cdn.telerik.com/2016.1.112/styles/kendo.mobile.all.min.css" /> 

    <script src="http://code.jquery.com/jquery-1.9.1.min.js"></script> 
    <script src="http://kendo.cdn.telerik.com/2016.1.112/js/kendo.all.min.js"></script> 
</head> 
<body> 
    <form runat="server" id="form1"> 
     <div id="dialog"> 
      <asp:TextBox runat="server" ID="TxtIn" /> 
     </div> 

     <asp:TextBox runat="server" ID="TxtOut" /> 

     <asp:Button runat="server" ID="Btn" Text="Submit" /> 
    </form> 
    <script> 
     $("#dialog").kendoWindow({ 
      actions: ["Minimize", "Maximize"] 
     }); 
     $("#dialog").data("kendoWindow").center(); 
    </script> 
</body> 
</html> 

在片段上方BTN回传的点击发生后TxtOut保留了它的价值,但TxtIn失去它,为什么我也不清楚。我相信这与Kendo窗口所做的DOM更改有关,但不确定。有人可以解释一下,并提供任何解决方法...

回答

1

当您将任何div元素转换为Kendo窗口时,它将从窗体标记中删除div,它会创建新的div并添加您现有的div。

请查看以下屏幕截图了解更多详情。

enter image description here

请检查的行为,下面的代码片断,你会得到知道为什么“TxtIn”文本框不保留回传后的价值。

<body> 
    <form runat="server" id="form1"> 
     <asp:TextBox runat="server" ID="TxtOut" /> 

     <asp:Button runat="server" ID="Btn" Text="Submit" /> 
    </form> 
    <input type="text" id="TxtIn" /> 
</body> 

让我知道是否有任何问题。

+0

啊!对...有没有解决这个问题的方法?可能会使用一些其他弹出窗口提供插件而不是Kendo UI?你有什么想法吗? – yogi

+0

我只有两个Javascript/Jquery插件(Kendo-UI,Jquery-UI)的知识,那里的行为也是一样的。我们必须手动存储和检索来自/ in hiddenfield/cookie的文本框值。 –

0

我发现它!剑道为这个问题提供了一个优雅的解决方案。这是一个配置appendTo。使用它你可以定义你的DOM的哪个元素应该附加到窗口。默认情况下,它必须是body,因此它是在“在form标签之后”追加它,只是将它改为我的表单,以便将它附加到我的表单元素上,而现在它工作得很好。

$("#dialog").kendoWindow({ 
    actions: ["Minimize", "Maximize"], 
    appendTo: "form#form1" // This one does the magic 
});