0

私は持っていdojox.grid.DataGridます。この例では、一連の値が表示され、最後の 2 つの列が埋められています。これらの列は、 のプロパティをbuttons使用してデータベースから取得されたデータに従って動的に作成されます。今、私は自分のグリッドをうまく取得しています。ボタンも問題なく出来上がりました。私が今しなければならないことは、そのボタン クリック イベントで特定のボタンをクリックすると、その URL のクエリ文字列パラメーターとして渡される特定の値 (A) を持つ新しい URL にリダイレクトすることです。そして、ページを更新したくありません。ボタンをクリックすると、他の JSP ページでアクションが実行され、メッセージが表示されます。formattergridStruturealert("Action is being performed")

データ グリッド用にコーディングした Java スクリプト コード ::

<script type="text/javascript">
function getInfoFromServer(){
        $.get("http://localhost:8080/2_8_2012/jsp/GetJson.jsp?random=" + new Date().getTime(), function (result) {
        success:postToPage(result),
        alert('Load was performed.');
            },"json");
    }


    function postToPage(data){
    alert(data);    
    var storedata = {
        identifier:"ActID",
        items: data
        };
    alert(storedata);

    var store1 = new dojo.data.ItemFileWriteStore({data: storedata}) ;
    var gridStructure =[[

                          { field: "ActID",
                                name: "Activity ID",

                                classes:"firstName"
                          },
                          {
                              field: "Assigned To",
                              name: "Assigned To",

                              classes: "firstName"
                          },
                          { field: "Activity Type",
                                name: "Activity Type",

                                classes:"firstName"
                          },
                          {
                              field: "Status",
                              name: "Status",

                              classes: "firstName"
                          },
                          {
                              field: "Assigned Date",
                              name: "Assigned Date",

                              classes: "firstName"
                          },
                          {
                              field: "Assigned Time",
                              name: "Assigned Time",

                              classes: "firstName"
                          },
                          {
                              field: "Email",
                              name: "Send Mail",
                              formatter: sendmail,
                              classes: "firstName"

                          },
                          {
                              field: "ActID",
                              name: "Delete",
                              formatter: deleteact,
                                classes: "firstName"
                          }

                    ]
              ];
    //var grid = dijit.byId("gridDiv");
    //grid.setStore(store1);

    var grid = new dojox.grid.DataGrid({

        store: store1,
        structure: gridStructure,
        rowSelector: '30px',
        selectionMode: "single",
        autoHeight:true,
        columnReordering:true

        },'gridDiv');

    grid.startup();
    dojo.connect(grid, "onRowClick", grid, function(){
                var items = grid.selection.getSelected();
                dojo.forEach(items, function(item){
                    var v = grid.store.getValue(item, "ActID");
                    getdetailsfordialog(v);

                    function showDialog() {
                        dojo.require('dijit.Tooltip');
                        dijit.byId("terms").show();
                    }

                    showDialog();
                    }, grid);

            });
}

function sendmail(item) {
    alert(item);
      return "<button onclick=http://localhost:8080/2_8_2012/jsp/SendMailReminder.jsp?Send Mail="+item+"'\">Send Mail</button>";

    }
function deleteact(item) {
    alert(item);
      return "<button onclick=http://localhost:8080/2_8_2012/jsp/DeleteActivity.jsp?Activity ID="+item+"'\">Delete</button>";
    }
</script>

呼び出しを使用してグリッド データを取得して$.getいます。上記のコード フィールドEmailとは、 で呼び出されるActIDたびに実際に作成されるボタンsendmailです。グリッドが表示されます。また、両方の関数の値が右に出てきて、それぞれの値があります。のように、私は取得中および取得中のように、特定の(列のボタン)私のページにそれが欲しいdeleteactformatteralert(item)alert(item)DeleteActIDalert(item)sendmail"shan@gmail.com"button clickSendmail

http://localhost:8080/2_8_2012/jsp/SendMailReminder.jsp?Send Mail="+item+"'

このページのコラムbutton clickDelete

http://localhost:8080/2_8_2012/jsp/DeleteActivity.jsp?Activity ID="+item+"'\"

データベースから取得されたアイテムの値で開きます。rowClickuボタンRowclickをクリックすると、ボタンクリックイベントの代わりにイベントが発生するため、問題を引き起こしているイベントも適用しました。これを行う方法。グリッド上の各ボタンにクリックイベントを適用することを考えました。しかし、私が知らないIDがあります。これについて私を助けてください。ありがとう..

4

1 に答える 1

1

dojo.xhrPost必要なのは、サーバー側のコードを調整して、メールを送信するためのajax投稿リクエストを処理し、ユーザーがボタンをクリックしたときにメソッドを使用することだと思います。JSコードは次のようになります。

  function sendMailHandler(evt, item) {
    dojo.xhrPost({
      url: "/2_8_2012/jsp/SendMailReminder.jsp",
      content: {
        'SendMail': item
      },
      error: function() {
        alert("Sent failure");
      },
      load: function(result) {
        alert("Email sent with result: " + result);
      }
    });

    dojo.stopEvent(evt);
  }

  function sendmail(item) {
    return "<button onclick='sendMailHandler(arguments[0], \"" + item +  "\")'>Send Mail</button>";
  }

dojo.stopEvent(evt);insendMailHandlerは、イベントのバブリングを停止し、発生を防ぐために使用されることに注意してくださいRowClick

dojo.xhrGetjQueryの代わりに使用できるajaxGETリクエストを実行するための同様の構文もあります$.getdojo.xhrGet私の例の代わりに使用することもできますdojo.xhrPost。これは、調整しなくてもバックエンドで機能する可能性があるためですが、POST(またはajaxフォームの送信)はより意味的に正しいでしょう。

また、「id = "something"の登録を試みました」については、IDの重複を避けるためにコードを調整するか、エラーの原因となるコードを表示する必要があります。

于 2012-04-23T07:25:45.547 に答える