2012-02-27 14 views
0

gridviewセールスマンのリストを持っています。セールスマンがGridのA ButtonFieldTemplateを使用して選択されたとき。 Labelに表示されるセールスマンの名前が必要です。値/ ASP.netのC#でのグリッドビューの列のテキストを取得

は、これまでのところ私はこれを持っているが、それは動作していない:それはすべてのエラーを投げていない

protected void gvSalesmanByManager_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    lblSalesmanCustomers.Text = gvSalesmanByManager.SelectedValue + "'s Customers"; 
} 

。 Visual Studioでは、赤い波打ち線もありません。それは単にうまく動作しません。

これをASP.netとC#4.0でどうすれば実現できますか?

+2

は、我々はあなたがイベントとすべてに、これまで持っているもののコードを参照することはできますか? – Ben

+0

これまでの私のコード:保護された無効gvSalesmanByManager_SelectedIndexChanged(オブジェクト送信者、EventArgsのがe){ lblSalesmanCustomers.Text = gvSalesmanByManager.SelectedValue + "の顧客"; } –

答えて

2

についてdocumentation SelectedValueは、GridViewコントロールで選択された行のデータキー値を取得します。あなたのGridViewにキー付きの列が含まれていて、dataKeyNamesProperty(datakeynames = "myID"など)を設定しましたか?

EDIT:

GridViewRow row = GridView1.SelectedRow; 
lblSalesmanCustomers.Text = row.Cells[2].Text; 

EDIT2: あなたはSelectedRowを使用することができた列の値にアクセスするには テンプレートのフィールドを読みたいときに、2つのオプションがあります。追加の不可視の列に値を格納するか、テンプレートフィールド内のコントロールにアクセスします。このようなものが動作するはずです:

lblSalesmanCustomers.Text = ((TextBox)row.Cells[2].FindContol("tbxName")).Text; 
+0

キーが含まれていて、DataKey名を設定しました。しかし、私はキー/ IDを取得しようとしていない、私は実際にセールスマンの名前の2列以上を取得しようとしています。 Keyを最初に取得し、2列以上のテキストを取得する必要がある場合を除きます。 –

+0

他の値にアクセスするには、更新されたサンプルのようにselectetRowを使用してください。 – slfan

+0

ありがとうございました。これは私を近づけている。列内の特定のセルの値を取得できるようになりました。それは1番目のセル、2番目のセル、3番目のセルで動作しますが、もちろん私が失敗したのは、セル(セールスマンの名前)を試すと失敗します。それは何も示していない。その特定のセルはテンプレートフィールドです:リンクボタン。また、ストアドプロシージャでは、人の姓と名を連結します。これらのことが問題を引き起こす可能性はありますか?私はそれがテンプレートフィールドなので、私は考えている:LinkBut​​ton、それは働きたくありません。私は近づいている。 –

2

ページのロードイベントに空のテキストを割り当てていないことを確認してください。 か、場合に、それらの初期化を配置する必要があり、これまで

+0

あなたのコメントは少し助けになりました...少し。私はPageLoadイベントの中にいました。そこで、クリックしたグリッドのSelectedIndex changedイベントに移動しました。今私は "14の顧客"を読むためにラベルを手に入れます。 「Frank's Customers」と言わなければならないとき明らかに、データグリッドからIndividualID/Keyを取得しています。 2列以上のテキストをどのように取得するのですか?実際の名前はラベルに表示されますか? –

+0

現在のデータキー名はIndividualIDです。このKeyは、そのIndividualIDを持つセールスマンに属する顧客のデータグリッドを表示します。しかし、私はまた、Goidがクリックされたときにそのセールスマンの名前をラベルに表示する必要があります。 –

0

私のコードをブロックするには(Page.IsPostback!):保護された無効gvSalesmanByManager_SelectedIndexChanged(オブジェクト送信者、EventArgsの電子){lblSalesmanCustomers.Text = gvSalesmanByManager.SelectedValue +「の顧客」 ; } -

イベント "gvSalesmanByManager_SelectedIndexChanged" 次のコードで試してください。

lblSalesmanCustomers.Text = gvSalesmanByManager.SelectedRow.Cells [0]の.text。

あなたは "ButtonFieldTemplate"について何か言ってくれました。あなたのascxファイルのコードを表示してください。

*編集: 「コントロール[1]」は正しくはありません。しかし、0はリテラルです。コードをデバッグしてブレークポイントを設定することもできます。はるかに簡単です。 LinkBut​​tonでこれを試してください: LinkBut​​ton lnk1 = gvSalesmanByManager.SelectedRow.Cells [0] .Controls [1] as LinkBut​​ton; lblSalesmanCustomers.Text = lnk1.Text;

よろしく、 誰も

+0

上記のslfanのコメントは機能していますが、ボタンフィールドのテキストをラベルに表示することはできません。 BoundFieldのみ。ここで私のAspxページコード:

関連する問題