2012-11-22 62 views
0

我有一个简单的问题。extjs/c#是保存到数据库

我有一个FormView,一个保存按钮。点击按钮后,它会保存到数据库。

我已经添加了一个EXT消息框来确认用户是否想要保存数据。当他在messagebox的yes按钮上点击yes时,它应该保存数据。

我找不到在哪里写分机的按钮逻辑。

这里是我的代码:

 <asp:FormView ID="myform" runat="server" DataSourceID="mydatasource" DefaultMode="Edit" DataKeyNames="Id" > 

     <EditItemTemplate>            
     <asp:TextBox ID="myText" runat="server" TextMode="MultiLine" ClientIDMode="Static" 
     Text='<%#Bind("xx") %>' />             
     <ext:Button ID="btn_Update" runat="server" AutoPostBack="false" CausesValidation="false" CommandName="Update" Text="Speichern" StyleSpec="float: left; margin-left:10px;">                    <DirectEvents> 
<Click OnEvent="btnUpdateClick"></Click> 
</DirectEvents> 
                   </ext:Button> 



    <script type="text/javascript"> 

    function showResult(btn) 
    { 
      Ext.example.msg('Button Click', 'You clicked the {0} button', btn); 
     }; 
     function showResultText(btn, text) 
     { 
      Ext.example.msg('Button Click', 'You clicked the {0} button and entered the text "{1}".', btn, text); 
     } 

     var showResult = function (btn) { 
      Ext.Msg.notify("Button Click", "You clicked the " + btn + " button"); 
     }; 

     var showResultText = function (btn, text) { 
      Ext.Msg.notify("Button Click", "You clicked the " + btn + 'button and entered the text "' + text + '".'); 
     }; 


</script> 



protected void btnUpdateClick(object sender, DirectEventArgs e) 
     { 
      X.Msg.Confirm("Confirm", "Are you sure you want to save?", new JFunction { Fn = "showResult" }).Show(); 

     } 
+1

请提供一个示例/更改您的问题。消息框无法更新任何内容。所以你不清楚你在问什么。 – sra

+0

消息框有和没有按钮(你想要保存数据),当用户单击是时,它应该保存数据,我只是不知道我怎么能做到这一点,现在我将提供代码。 – Mark

回答

0

我会建议,而不是布线对话框的是按钮执行回发。您应该等待消息框关闭,然后在用户单击是时调用回发功能。

例如:

Ext.Msg.prompt('SaveChange', 'Would you like to save the changes?:', function(btn, text){ 
    if (btn == 'yes'){ 
     __doPostBack('btnSubmit','OnClick'); 
    } 
}); 

与您的按钮的名称替换btnSubmit按钮。

虽然上述解决方案将是我推荐的方法,你可以通过做或者,使用jQuery:

$('btnSubmit').trigger('click'); 

来源:http://dev.sencha.com/playpen/docs/output/Ext.MessageBox.html

+0

要点是,我的行动是让按钮做回发动作,我不能让这种事情发生。 – Mark

+0

-1用于混淆jquery和extjs。有没有需要使用两个库 – sra

+0

强烈反对,jquery是如此事实与asp.net它实际上是框架的一部分,我也提供了一个标准的asp.net方法来执行此操作! –

2

我猜你正在寻找这样的:(可放置在任何演示盒的煎茶API)的

编辑2

我有完全监督你使用Direct。你应该提到这样的事情。 是否有任何使用DirectEvent的理由?我无法测试,但这个怎么样(在包装功能部件可能是不必要的,但一个正常的ExtJS的处理程序获得按钮引用作为第一个参数)

<form runat="server"> 
     <ext:ResourceManager runat="server" /> 

     <script runat="server"> 
      [DirectMethod] 
      public void SetTimeStamp(string field) 
      { 
       // do your saving 
      } 
     </script> 
     <ext:TextField ID="TextField" runat="server" FieldLabel="Label"/> 
     <ext:Button ID="Button" runat="server" Text="Click Me" Icon="Lightning"> 
      <Listeners> 
       <Click Handler="function() {Ext.Msg.show({title: 'Save?', msg: 'Do you want to save the data?:', buttons: Ext.Msg.YESNO,fn: function(btn){ if(btn == 'yes') {App.direct.SetTimeStamp(#{TextField}.getValue());}}})}" /> 
      </Listeners> 
     </ext:Button> 
</form> 

编辑1只需使用Ext.Ajax.request()

Ext.Msg.show({ 
     title: 'Save?', 
     msg: 'Do you want to save the data?:', 
     buttons: Ext.Msg.YESNO, 
     fn: function(btn, text){ 
       Ext.Ajax.request({ 
       url: 'yourUrl', 
       method: 'POST', 
       params: { 
        // your params 
       }, 
       success: function() { 
        console.log('success'); 
       }, 
       failure: function() { 
        console.log('woops'); 
       } 
      }); 
     } 
}); 

形式示例除去

+0

要点是,我的行动是让按钮做一个回发动作,我不能让这种情况发生。 – Mark

+0

@Mark我做了一个编辑,现在单击YES后触发ajax请求 – sra

1

谢谢大家的支持,我找到了解决问题的方法我会把它放在这里,也许对某个人有用。

首先,按钮代码,必须在ASPX按钮事件Isupload = “真”

ext:Button ID="btn_Update" runat="server" AutoPostBack="false" CausesValidation="false" 
CommandName="Update" Text="Save" StyleSpec="float: left; margin-left: 10px;" 
AutoScroll="False"> 
<DirectEvents> 
<Click OnEvent="btnUpdateClick" IsUpload="true" AutoDataBind="true"> 
</Click> 
</DirectEvents> 
</ext:Button> 

protected void btnUpdateClick(object sender, DirectEventArgs e) 
{ 
     MessageBoxButtonConfig buttonYes = new MessageBoxButtonConfig(); 
     buttonYes.Text = "Yes"; 
     buttonYes.Handler = "Ext.net.DirectMethods.ClickedYES();"; 

     MessageBoxButtonConfig buttonNo = new MessageBoxButtonConfig(); 
     buttonNo.Text = "NO"; 
     // buttonNo.Handler = "Ext.net.DirectMethods.ClickedNO();"; 

     MessageBoxButtonsConfig yesNoButtons = new MessageBoxButtonsConfig(); 
     yesNoButtons.Yes = buttonYes; 
     yesNoButtons.No = buttonNo; 

     X.Msg.Confirm("Save Changes", "Would you like to Save?", yesNoButtons).Show(); 
} 

最后的是方法,将保存到数据库:

[DirectMethod] 
public void ClickedYES() 
{ 
     Formview.UpdateItem(false); 
     Formview.DataBind(); 
} 
+0

感谢您分享您的解决方案+1 – sra