2011-12-07 3 views
1

에 따라 그리드 뷰에서 동적 하이퍼 링크를 추가, 나는 현재 3 표, 즉 상태, Project_glance, Application_header을 데이터를 생성하는 그리드 뷰를 사용합니다. SQL 쿼리는 4 개의 열을 반환하지만 그리드 뷰에서는 3 개의 열만 보여줍니다. Status_id> 15 만보기 하이퍼 링크가 표시 그렇지 않으면보기 하이퍼 링크 텍스트는 '편집'로 변경됩니다 것어떻게 내 웹 사이트에서 특정 조건

<asp:GridView ID="grdProf" runat="server" AllowPaging="True" AutoGenerateColumns="false" OnPageIndexChanging="grdProf_PageIndexChanging"> 
<Columns> 
    <asp:TemplateField> 
     <ItemTemplate> 
      <asp:HyperLink ID="hlnkView" Visible="true" Text="View" runat="server" >  </asp:HyperLink> 
     </ItemTemplate> 
    </asp:TemplateField> 
    <asp:BoundField DataField="ApplicationID" HeaderText="ApplicantionID" /> 
    <asp:BoundField DataField="PRGLProjectTitle" HeaderText="Project Title" /> 
    <asp:BoundField DataField="Status" HeaderText="Project Status" /> 
</Columns> 
</asp:GridView> 

경우 A : 마지막 열은 다음 project.The의 Status_id 내에서 .aspx 코드 반환 탐색 URL이이 하이퍼 링크에 추가되고 사용자가 프로젝트 세부 사항을 삭제할 수있는 또 다른 하이퍼 링크 '삭제'가 표시됩니다.

이에 대한 올바른 해결책을 찾기 위해 제발 도와주세요 ..

+1

동일한 질문을 여러 사이트에 게시하지 마십시오. 이것은 이전되었으며 이제 병합이 필요합니다. 모든 회원은 커뮤니티 및 운영자의 다른 회원을 위해 일합니다. '낭포가 어떻게해야; – ChrisF

답변

0

첫째, 당신의 ItemTemplate을에 삭제 하이퍼 링크를 추가합니다.

는 그런 다음 Status_id 필드를 액세스 할 수 있도록, 당신은 당신의 GridView의 DataKeys에 그것을 추가 할 수 있습니다.

그런 다음, 하이퍼 링크를 잡아, 당신의 GridView의 RowDataBound 방법에 구독 status_id을 확인하고 그에 따라 하이퍼 링크 '가시성을 설정할 수 있습니다. 이

protected void grdProf_RowDataBound(Object sender, GridViewRowEventArgs e) 
{ 

if(e.Row.RowType == DataControlRowType.DataRow) 
{ 

    DataRowView rowView = (DataRowView)e.Row.DataItem; 

    // Retrieve the status value for the current row. 
    string status = rowView["Status"].ToString(); 
    //Now you have the status 
    //get a reference to view hyperlink and hide it if that's the case 
    Hyperlink hlnkView = e.Row.FindControl("hlnkView") as HyperLink; 
    //example: 
    if(int.Parse(status)>15) 
     hlnkView .Visible=false;//you are done 

} 
} 

처럼

<asp:GridView DataKeyNames="status_id" 

<ItemTemplate> 
    <asp:HyperLink ID="hlnkView" Visible="true" Text="View" runat="server" > 
    <asp:HyperLink ID="hlnkDelete" Visible="false" Text="Delete" runat="server" > 
</asp:HyperLink> 

void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) { 
    HyperLink delHl = e.Row.Cells[0].FindControl("hlnkDelete") as HyperLink; 
    int statusId = (int)(sender as GridView).DataKeys[e.Row.RowIndex].Value; 
    delHl.Visible = statusId <= 15; 
} 
+0

는 인덱스 ** 범위 밖 [e.Row.RowIndex] .Value이 라인 INT statusid '= (INT) (발신자의 GridView 등) .DataKeys에 오류가 ** 도시? – Nupur

+0

@Nupur는 내가의 GridView 정의에 DataKeyNames = "status_id"를 추가 예 당신의 GridView 정의 –

+0

에'DataKeyNames = "status_id을"'추가했다. – Nupur

0

지금까지에 "편집"하이퍼 링크를 표시하는 것과 같이, 나는 옆에있는 "보기"열을 추가로 열을 숨길 또는 이후 필요에 따라이 다른 하이퍼 링크를 표시 할 것 어떤 경우에는 하나의 하이퍼 링크 열이 필요하며 어떤 경우에는 두 개가 필요합니다.

관련 문제