2017-08-21 20 views
0

私はgridviewに10+の列と選択された日付に基づいて任意の数の行を持っています。 gridviewは次のようになります。 enter image description heregridviewリダイレクトonclickパラメータ付き

このグリッドビューを生成するために選択できるパラメータがいくつかあります。 Weight Ticket列にonClickイベントを実装しようとしています。個々のウェイトチケットをクリックすると、ウェイトチケットの詳細を示す別のページにページがリダイレクトされます。

私は、次を実装しようとしました: 何もしませんでしたe.Row.cells[4].Attribute["onClick"] = redirectFunction

。私は重量券をクリックすることができません。

本当にありがとうございます。

オプションの要件

これは私の問いませんが、私はこれに何か他のものを追加できるようにしたいと思います。リダイレクトは、次のように行われます。

Response.Redirect("~/pages/TicketDetails.aspx?wt=" + weightTicket + "&act=" + actionMethod +"&src=" + HttpContext.Current.Request.Url);

actionMethodTicketDetailsページの編集を許可するかどうかを決定するものです。 actionMethodViewに設定されている場合は編集できません。 Editに設定されている場合は、可能です。私はリダイレクト機能に、それがビューアクションかエディットアクションかを動的に伝えたいと思っています。

In,Out、またはLoad #の列を見ることができます。それらのいずれかにNAがある場合は、editアクションです。値がNAでない場合は、ビューです。これはほんの追加のリクエストです。私はいつもそれを編集として開いて、これすべてを心配する必要はありませんが、私もこれを行うことができれば助けになります。

ご協力いただければ幸いです。
私が質問(私の試み)に書いた行だけの擬似コードです:

編集1ありがとうございます。ここに私のプログラムでは、実際の行されます。

e.Row.Cells[4].Attributes["onClick"] = "dataCellClick(" + e.Row.Cells[4].ToString() + ", view;";

dataCellClick()は、順番にリダイレクトを行い、私は呼び出しています機能です。私は関数を呼び出さないようにしようとしましたが、ここでリダイレクト関数を呼び出すと動作しませんでした。だから私はこれを試した。関数呼び出しの2つのパラメータはWeightTicketactionMethodです。

編集2:
すでに配置されているgridviewは動的です。そのことによって、私は意味:

enter image description here

これは私のデザイナービューは、ページのように見えるものです。イメージ内でグリッドビューが選択されています。 1つ1つずつ列挙されているわけではありません。クエリから列と行を動的に取得します。

ので、これらは私が持っているすべてのイベントハンドラプロパティです:

enter image description here

私もあなたにこの多くを伝えることができます:
次の列は常にGridViewの中に存在している:

  1. In
  2. Out
  3. Load#
  4. 0これらの列は、標準の順である

ネット

  • ベンダー名
  • 重チケット
  • ベンダーBOL
  • トラック総
  • 製品。

  • 答えて

    2

    あなたのコードのこの部分が正しくありません:

    e.Row.cells[4].Attribute["onClick"] = redirectFunction 
    

    あなたはRowDataBoundでこのように編集されなければならない(私はe.Row.Cells[4].Textはページ名であるはず):

    e.Row.Cells[4].Attributes["onClick"] = "redirectFunction('"+e.Row.Cells[4].Text+"')"; 
    

    redirectFunctionのようなJavaScriptの関数でありますこれは(pageName.aspxにリダイレクト):

    <script> 
        function redirectFunction(pageName) { 
         window.location.href = pageName + ".aspx"; 
        } 
    </script> 
    
    +0

    ええ、私は構文が正しいので、自分のプログラムで使用した正確な行を投稿していないだけです。私が使った擬似コードのアイデアを出そうとしていました。 しかし、リダイレクト機能はJavaScriptであるのに対して、javascript機能はaspxファイルに入っていますか?または、スクリプトフォルダの独自の.jsファイルですか? –

    +0

    @CrazyCucumber 'redirectFunction'はaspxマークアップにあります。 –

    +0

    @CrazyCucumberこの関数は、aspxまたはjsファイルで呼び出すことができます。 –

    0

    私は(これはVB.NETである)をクリック列インデックスは「体重チケット」の一つであるかどうか、CellClickイベントを使用してチェックすることをお勧めしたい:

    Private Sub dgwList_CellClick(sender As Object, e As DataGridViewCellEventArgs) Handles dgwList.CellClick 
        If e.ColumnIndex = 4 Then 
         Call MyRedirectFunciton() 
        End If 
    End Sub 
    

    C#で、それがすべきこのようなものになる:...

    もちろん
    private void dgwList_CellClick(object sender, DataGridViewCellEventArgs e) 
    { 
        if (e.ColumnIndex == 4) { 
         MyRedirectFunciton(); 
        } 
    } 
    

    、あなたもrowIndexプロパティを渡すことができ

    CellClick: enter image description here

    +0

    この関数はリスナーのように動作しますか?または、クリックを検出するためにどこか別の場所に呼び出す必要がありますか?申し訳ありませんが、私はこれに新しいです。 –

    +0

    いいえ、デザイナのDataGridViewをクリックするだけで、プロパティで "イベント"ボタンをクリックし、 "CellClick"イベントを見つけてその横のフィールドをダブルクリックすると、上記のような新しい関数が作成され、データグリッドビュー。上記のコードをコピーして、 "Handler"キーワードの後に​​ "dgwList"をDataGridViewの名前に置き換えてください。 –

    +0

    "Handler"キーワードはVB.NETでのみ使用でき、Visual Studioのプロパティ。 –

    関連する問題