2012-02-27 15 views
0

を使用している列の値を取得します。私は、列のGridViewと1を持っているLinkButtonButtonField) は、私はちょうど良い私のグリッド内の特定のセルの値を取得することができます使用してTemplateFieldを持っています。使用:ButtonField

GridViewRow row = GridView1.SelectedRow; 

lblSalesmanCustomers.Text = row.Cells[2].Text; 

次に、そのセルのテキストをLabelに表示します。

しかし、私はこれをButtonFieldテンプレートで動作させることはできません。これは、Template以外の列でのみ機能します。

ButtonField/TemplateFieldを使用している列の特定のセルの値を取得するにはどうすればよいですか?

EDIT:これは私のGridView内のマイボタンフィールドコードです: <asp:ButtonField DataTextField="Customer" HeaderText="Customer" ButtonType="Link" CommandName="Select" />

また、これは、このイベントに起こっている:

protected void gvManagerCustomers_SelectedIndexChanged(object sender, EventArgs e) 
+0

GridViewのaspxコードを提供できますか? –

+0

サイトに26の質問があると、あなたの投稿にコードを書式設定する方法を知っておく必要があります。 (*そして、明らかに、最後に署名を入れないようにする*) – jadarnel27

+0

私のコードをまだどのようにフォーマットするのか分かりません。 Markupに慣れていない私の名前を何とか最後に残しておけばどうしますか? –

答えて

1

私はhyperlinkfieldとbuttonfieldに問題があることを知っていますが、回避策があります。 ButtonNamesという名前の列に基づいてボタンフィールドテキストをバインドし、その列に「button bob」、「button jerry」などのすべての名前があるとします。GridViewでは、不可視の列を最初の列として追加し、その値をButtonNamesとしてバインドします。可視性プロパティの1つを設定することで、非表示にします。それが私の頭の上からあったのを忘れてしまった。次に、ボタンフィールドのテキストを取得したいときは、単純にその非表示の列からデータを取得します。代わりに、同じをhyperlinkfiendsに適用します。

編集:ここにいくつかのコードがあります。

<asp:BoundColumn ItemStyle-HorizontalAlign="Left" DataField="ButtonNames" SortExpression="ButtonNames" HeaderText="TriageId" Visible="false" ReadOnly="true"></asp:BoundColumn> 

次に、あなたは文字列s =のe.Item.Cells経由で取得する[0]の.textここで、eはDataGridCommandEventArgsまたはその性質のために何かです。

+0

これは動作しません。私はLeonの提案を使わなければならなかった。それは私が欲しかったものを私に与えました。 – Echiban

0

は、細胞内のコントロールのコレクションがあります - あなたはありそこにアクセスできるようになります。

簡単な方法のようなものを使用することですけれども:

Label l = row.FindControl("myControlId"); 

EDIT:上記真の正確なアプローチは動作しません - どのようなことに注意していますが、コントロールを使用することができ、次の作業を行うに私たちはここでやっていることは、悪い習慣が蔓延していることです(しかし、あとは利便性のためにGridViewを使用しています)。

protected void gvManagerCustomers_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    var x = ((sender as GridView).SelectedRow.Cells[0].Controls[0] as LinkButton).Text; 
} 

これを理解するには、ハンドラメソッドでデバッグ環境とブレークポイントを設定し、クラス階層をドリルダウンします。ただ明らかに言及する)

EDIT - 列は、ハードコーディングされてここに - あなたはおそらくそれを変更する必要があります。デバッガは、私たちの友人です。

+0

私はこのアプローチを試しました。しかし、何らかの理由でDatagridviewでControlを指定すると、IDは許可されず、サポートされません。 –

2

var Button = row.Cells["Customer"].Controls[0];が必要なボタンを取得するかどうかを確認してください。

正しいタイプにキャストする必要があります。

+1

これは正解でなければなりません。レオンに感謝します。 – Echiban