2011-12-15 10 views
0

私のコードやJavaScriptのどこにでもOKボタンをクリックするとページが更新されるはずがありません。しかし、ユーザーが[OK]ボタンをクリックすると、再試行のポップアップが表示されます。 これの背後にある理由はわかりません。ここでOKポップアップを再試行します

はOKボタンの私のコードです:ここでは

protected void btn_ok_click(object sender, EventArgs e) 
{ 
    tree_items.Nodes.Clear();   
    TableClass.MainTable = new DataTable(); 

    SqlConnection connection1 = new SqlConnection(); 
    connection1.ConnectionString = ConfigurationManager.ConnectionStrings["A"].ConnectionString; 

    SqlCommand command1 = new SqlCommand("GetStuff", connection1); 
    command1.CommandType = CommandType.StoredProcedure; 

    command1.Parameters.Add(new SqlParameter("@Id", solution_id)); 

    command1.CommandTimeout = 600; 
    SqlDataAdapter adapter1 = new SqlDataAdapter(command1); 

    connection1.Open(); 
    adapter1.Fill(TableClass.MainTable); 

    GenerateTreeView(TableClass.MainTable);  

    adapter1.Dispose(); 
    command1.Dispose(); 
    connection1.Dispose(); 
} 

JavaScriptがOKボタン用です:

<asp:Button ID="btn_ok" runat="server" Height="32px" OnClick="btn_ok_click" 
    Text="OK" Width="100px" /> 

助けてください。ここで がGenerateTreeviwコードです:

private void GenerateTreeView(DataTable table) 
     { 
      DataRow[] foundRows = table.Select("ParentId = -1", "OrderIndex"); 
      TreeNode RootParentNode = null; 

      int j = 1; 
      foreach (DataRow i in foundRows) 
      { 
       string NewParentNodeName = i.Field<string>("Name"); 

       string NewParentNodeKey = Convert.ToString(i.Field<int>("ItemId")); 
       RootParentNode = new TreeNode(NewParentNodeName, NewParentNodeKey);    
       i["OrderIndex"] = j; 
       j++; 


       GenerateChildNodes(table, NewParentNodeKey, RootParentNode); 
       tree_items.Nodes.Add(RootParentNode); 
      } 
     } 
+0

okボタンのコードはサーバー側のコードです。ページがサーバーに送信されない場合、どのように実行されますか? 「再試行」ダイアログ(フォームデータを再投稿したいかどうかをユーザーに尋ねるブラウザを意味すると仮定しています)の原因は、表示されたコードの外部にあるようです。表示されるコードは、ボタンをレンダリングしたり元のポストを実行したりすることはありません。サーバーのボタンをクリックするだけです。完全に機能する最小限の例でエラーを再現できますか? – David

+0

GenerateTreeView(TableClass.MainTable)は何をしますか?再試行ポップアップをトリガーするウェブページコントロールをレンダリングするとしたらどうでしょうか? – Turbot

+0

データベースからtreeviewリストの項目を追加するだけです – Ish

答えて

0

ASP.netでのデフォルトの動作は、ボタンをクリックすると、ブラウザがクリックされたボタンの情報をサーバーに新しい要求を行うということです。これはポストバックと呼ばれます。

.aspxファイルのボタンにrunat="server"と書かれているときにページをリロードする必要がありました。

私は2つの対処方法を参照してください:

AJAX。

あなたはASP.net AJAXは、ページの一部だけを更新することができ、またはあなたがrunat=serverをオフにすることができますが、AJAX呼び出しがこの

変更を行うWebページのWebMethod属性を直撃している「再試行ポップアップ」

それとも、 「再試行」ダイアログがどのように表示されるかを変更できますか?それはあなたのページの読み込み方法ですか? if (!this.IsPostBack)

+0

私は主なエラーは "ポストバック"と "リロード"の違いだと思います。 "再試行"ダイアログは間違いなくポストバックの定期的な使用ではないはずです。それは、提供されたコードの外部で何か他のものが間違っているように思えます。 – David

+0

私は再試行のポップアップを作成することはできませんが、私のコンピュータが他の人によって遠隔操作されている場合は、それを作り出すことができます。 – Ish

+0

@ user1047883再試行ポップアップを実行するコードはどこにありますか? – McKay

関連する問題