2010-02-16 8 views
1

나는 gridview에서 버튼의 클릭 이벤트를 가져와야하는 앱을 만들고 있습니다. 내가 먼저 열에서 값을 얻을 필요가 방식을gridview의 버튼에서 클릭 이벤트를 얻는 방법

<asp:BoundField ItemStyle-Width="100" DataField="Uploded" HeaderText="Uploaded Image" > 

다음의 gridview에 그것을 displlayed 한

protected void gviewTemplate_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    if (e.Row.RowType == DataControlRowType.DataRow) 
    { 
     if (e.Row.Cells[1].Text != e.Row.Cells[2].Text) 
     { 
      e.Row.BackColor = System.Drawing.Color.Red; 
      LinkButton lbtnReload = new LinkButton(); 
      lbtnReload.CommandArgument = e.Row.Cells[12].Text; 
      lbtnReload.Attributes.Add("onclick", "javascript:ShowDiv()"); 
      lbtnReload.CommandName = "reload"; 
      lbtnReload.Text = "Reload"; 
      e.Row.Cells[1].Controls.Add(lbtnReload); 

      DataTable dt = (DataTable)ViewState["update"]; 
      DataRow dr = dt.NewRow(); 
      dr["id"] = e.Row.Cells[0].ToString(); 
      dr["image"] = e.Row.Cells[1].ToString(); 
      dt.Rows.Add(dr); 
     } 
    } 
} 

protected void gviewTemplate_RowCommand(object sender, GridViewCommandEventArgs e) 
{ 
    if (e.CommandName == "reload") 
    { 
     hdnfield.value = int.Parse(e.CommandArgument.ToString()); 
    } 

    btnFuImage.Visible = true; fuploadImage.Visible = true; 
} 

: 나는 다음과 같이 내가 동적으로 추가하고 있기 때문에 될 수 행 명령을 받고 있지 않다 이 그리드 및 일부 숨겨진 된 변수로 업데이트 할 수 있도록 나중에 사용할 수 있습니다. 나는 그것을 어떻게 할 것인가? 덕분에 버튼에 미리

+0

을 통해 모든 것을 직접 제어하기 위해 거기에 쉽게 될 것입니다 TemplateField을 사용하고 버튼을 해달라고 자바 스크립트 호출하기 함수를 해당 버튼을 클릭하지만 지금은이 클라이언트 측 함수가 완료된 후 서버 측 메서드를 호출하려면 – pankaj

+0

해당 GridView에 대한 OnRowCommand 함수에서 코드를 표시 할 수 있습니다 –

+0

보호 된 void gviewTemplate_RowCommand (개체 보낸 사람, GridViewCommandEventArgs e) { if (e.CommandName == "reload") { hdnfield.value = int.Parse (e.CommandArgument.ToString()); } btnFuImage.Visible = true; fuploadImage.Visible = true; } – pankaj

답변

0

에서는, ButtonField를 사용하고 rowcommand 이벤트가 발생하는 명령 이름을 지정합니다. BoundField는 버튼을 렌더링하지 않습니다. 당신이 boundfield을 클릭하면, 그

은 클릭으로 사용하려고하는 ... 더 전문 설치입니까? 그냥이 방지됩니다 해달라고 그냥 자바 스크립트 함수에서 그 값을 넣어

lbtnReload.Attributes.Add("onclick", "javascript:ShowDiv(); SaveValue('" + value + "'); return false;); 

거기에서에 HiddenField에 넣어 이유는 하나 개의 값을 잡고 이후의에 HiddenField에 저장하려는 경우

+0

답장을 보내 주셔서 감사합니다. 내 버튼이 각 행에 표시되지 않기 때문에 버튼 필드를 사용할 수 없습니다. rowcommand의 조건에 따라 표시됩니다 – pankaj

+0

안녕하세요, 알았습니다. CommandName을 사용하여 TemplateField 내부에있는 버튼을 사용할 수 있습니다. RowDataBound 또는 RowCreated에서 Visible 속성을 설정하여 해당 단추에 액세스하여 표시하거나 숨길 수 있습니다. –

0

필요에서 당신은 훨씬 더 빨리 될 서버로 이동합니다 또한

왜 그냥 이미 메신저주의 TK하시기 바랍니다

+0

그것은 나에게 좋게 보인다, 나는 그것을 시험해 볼 예정이다,이 줄에서 거짓의 반환의 목적을 설명 할 수있다. – pankaj

+1

이 false를 반환하면 서버에 전달되지 않습니다. 단추를 클릭 할 때마다 서버에 갈 필요가 없으면 (기본적으로) 반환 값 false를 추가해야합니다. 기본적으로 반환 값은 true이므로 다시 게시가 발생합니다. –

+0

또한 처음부터 RowCommand가 타격을주지 않는 이유가 무엇인지에 대해 false를 반환하지 않았으므로. 확인하기 위해 체크 아웃 할 수도 있습니다. 앞으로 알게 될 것입니다. 그러나이 경우 순전히 자바 스크립트 솔루션이 가장 좋은 것으로 보입니다. –

관련 문제