2012-02-27 1 views
0

gridview에는 Salesman의 목록이 있습니다. A 판매원이 Grid에 A ButtonFieldTemplate을 사용하여 선택 될 때. 선택된 세일즈맨의 이름이 Label에 나타나야합니다.값/ASP.net의 Gridview에있는 열의 텍스트를 가져옵니다. 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입니다 전자) { lblSalesmanCustomers.Text = gvSalesmanByManager.SelectedValue + "의 고객"; } –

답변

2

documentation SelectedValue는 GridView 컨트롤에서 선택한 행의 데이터 키 값을 가져옵니다. GridView에 키가있는 열이 포함되어 있고 dataKeyNamesProperty (예 : datakeynames = "myID")를 설정 했습니까?

편집 :

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

EDIT2 : 당신이 SelectedRow을 사용할 수있는 컬럼의 값에 액세스하려면 템플릿 필드를 읽고 싶은 경우 두 가지 옵션이 있습니다. 추가 보이지 않는 열에 값을 저장하거나 템플릿 필드 안의 컨트롤에 액세스하십시오. 이 같은 것이 작동해야합니다 :

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

키가 포함되어 있으며 DataKey 이름을 설정했습니다.그러나 나는 Key/ID를 얻으려고하지 않고있다. Salesman의 이름으로 2 열을 실제로 얻으려고한다. Key를 먼저 가져와 2 열의 텍스트를 가져올 필요가 없다면? –

+0

다른 값에 액세스하려면 업데이트 된 샘플에서 selectetRow를 사용하십시오. – slfan

+0

Ok. 고맙습니다. 이것은 나를 더 가까이하게하고있다. 이제 특정 열의 특정 셀 값을 가져올 수 있습니다. 그것은 첫 번째 셀, 두 번째 셀, 3, 셀과 함께 작동하지만, 물론 내가 fouth 셀 (세일즈맨의 이름)을 시도하면 실패합니다. 아무것도 보여주지 않습니다. 그 특정 셀은 템플릿 필드입니다 : Link Button. 또한 저장 프로 시저 (Stored Procedure)에서 이름과 성을 병합합니다. 이러한 것들이 문제를 일으킬 수 있습니까? 템플릿 필드이기 때문에 생각하고 있습니다 : LinkButton, 작동하지 않으려 고합니다. 나는 점점 가까워지고있다. –

2

페이지로드 이벤트에 빈 텍스트를 지정하지 않았는지 확인하십시오. 은 또는 당신이 경우에 그 초기화를 배치해야 차단

+0

귀하의 의견은 약간 도움이되었습니다 ... 조금. 나는 PageLoad 이벤트 안에 있었다. 그래서 클릭 한 그리드의 SelectedIndex changed 이벤트로 옮겼습니다. 이제 나는 "14 's Customers"라는 라벨을 얻습니다. "Frank 's Customers"라고 말해야 할 때 분명히 데이터 그리드에서 IndividualID/Key를 얻고 있습니다. 2 열의 텍스트를 어떻게 가져 옵니까? 레이블에 나타나는 사람들의 실제 이름은 무엇입니까? –

+0

현재 데이터 키 이름은 IndividualID입니다. 이 키는 해당 IndividualID가있는 Salesman에 속한 고객의 DataGrid를 가져옵니다. 그러나 나는 Goid가 클릭되었을 때 그 판매원의 이름이 Label에 나타나도록해야합니다. –

0

지금까지 내 코드 (Page.IsPostback!) : 보호 무효 gvSalesmanByManager_SelectedIndexChanged (개체를 보낸 사람, EventArgs입니다 E) {lblSalesmanCustomers.Text = gvSalesmanByManager.SelectedValue이 + "의 고객" ; } -

경우 "gvSalesmanByManager_SelectedIndexChanged"다음 코드에서 시도 :

lblSalesmanCustomers.Text = gvSalesmanByManager.SelectedRow.Cells [0]는 .text;

당신은 "ButtonFieldTemplate"에 대해 뭔가 말했어. ascx 파일의 일부 코드를 보여 주면, 이것이 내가 생각하기에 도움이 될 것입니다.

* 편집 : "컨트롤 [1]"이 (가) 올바르지 않습니다. 그러나 0은 문자 그대로입니다. 코드를 디버그하고 중단 점을 설정할 수도 있습니다. 훨씬 쉬울거야. LinkButton으로 시도해보십시오. LinkButton lnk1 = gvSalesmanByManager.SelectedRow.Cells [0] .Controls [1] as LinkButton; lblSalesmanCustomers.Text = lnk1.Text;

안부, 아무도

+0

위의 slfan의 의견은 작동하지만 레이블에 나타나는 buttonfield 텍스트를 가져올 수 없습니다. BoundField 만. 다음은 내 Aspx 페이지 코드입니다 :

관련 문제