2011-01-11 13 views
0

Gridview1というGridView上でC#で以下の作業を行っています。私はそれをonSelectedIndexChangedに入れると動作します。グリッドビューのテキストボックスが機能しない

バック、私はそれを避けたいサーバーへ
HostTextbox.Text = GridView1.SelectedRow.Cells[0].Text; 

が、この記事以来、私は、セルのためにそれをやってますので、[0]細胞への[10]。だから、私はJavascriptを調べた。私は周りを探索し、さまざまなソリューションを見つけた、これは私がこれまで "半作業"を持っているものです。私は、問題がhapppensところ私に教えてアラートを挿入し、私のJavaScriptで

int myRowIdx = 0; // class variable 

protected void OnRowCreated(object sender, GridViewRowEventArgs e) 
    { 
     if (e.Row.RowType == DataControlRowType.DataRow) 
     { 
      e.Row.Attributes.Add("ondbclick", "sample('" + myRowIdx.ToString() + "')"); 
     } 
     myRowIdx++; 
    } 

私のC#が次のようになります。これは次のようになります。

function sample(rowIn) { 
     alert("A"); 
     var gViewID = '<%= GridView1.ClientID %>'; 
     alert("B"); 
     var gView = getElementById(gViewID); 
     alert("C"); 
     var gViewRow = gView.rows[rowIn]; 
     alert("D"); 
     var gViewRowColumn = gViewRow.cells[0]; 
     alert("E"); 
     var displayCell = gViewRowColumn.innerText; 
     alert("F"); 
     alert(displayCell); 
    } 

B最後に表示されるアラートです。私はこれを理解できないようです。私はそれを注意深く見てまだ成功していない。助けてください。

答えて

1

「私は細胞[0]から細胞[10]」でそれをやっているので、私はそれを避けたいと思います。選択した行の各セルに対してこれを連続して実行できます。だからあなたは1つのポストバックが必要です。

あなたのJavascriptの問題によると、js変数としてtr(GridViewRow)をサンプル関数に渡すだけです。したがって、あなたは唯一のパラメータとしてthisを渡す必要があります:

e.Row.Attributes.Add("ondbclick", "sample(this)"); 

とあなたのjs-機能に:グリッドビューの

function sample(tr) { 
     var gViewRowColumn = tr.cells[0]; 
     var displayCell = gViewRowColumn.innerText; 
     alert(displayCell); 
    } 
+0

おかげで、それが働いていた場合! 私が細胞について以前に何を意味したかは、あなたがすでに言ったように(私はちょうど私の質問にそれを含めなかった)連続してそれをやっているということでした。私がそうすると、ページ全体がリロードされ、Gridviewは約10,000レコードでリフレッシュされます。私はC#コードがサーバー側であったために起こったと考えていました。クライアントサイドのJavascriptを使用するのが最適でした。 もう一度ありがとうございます。 – GetRichSlow1

0

使用項目テンプレートパネルを。 ex.http://msdn.microsoft.com/en-us/library/aa479353.aspx 値を取得するには、onrowcommandイベントを使用します。

のような.. イベント { (e.commandname = "編集") {

は}

+0

非常に便利なリンク。私はこの特定のケースではTimソリューションを好む。 ありがとう – GetRichSlow1

関連する問題