검색 한 결과 아직 해결책을 찾지 못했습니다.Gridview의 하이퍼 링크가 1 행만큼 잘못된 행에 바인딩되었습니다.
DropdownList에 의해 호출되는 저장 프로 시저에 의해 채워진 Gridview가 있습니다. 쿼리가 제대로 작동하고 값이있는 테이블을 제공합니다. 첫 번째 열에 텍스트를 프로그래밍하여 하이퍼 링크로 변환 된 것을 볼 수 있습니다.
첫 번째 행 (헤더 행이 아님)에 링크가 없다는 점을 제외하면 모든 것이 잘 작동합니다. 사실 하이퍼 링크 주소는 대신 다음 행에 적용됩니다. 그래서 나머지 링크는 한 줄 아래로 튀어 나옵니다.
디버깅 할 때 첫 번째 하이퍼 링크로 간주되는 셀이 null ("") 값으로 표시되는 것으로 나타났습니다. IntelliSense에서 트래버스하면 행에 올바른 속성이 표시됩니다 (DataItem> Row> ItemArray에 텍스트 값이 있음).
는클라이언트 측
<asp:TableCell>
<asp:Label ID="ddlLabel" runat="server" Text="Choose a Group Folder: " />
<asp:DropDownList ID="ddlFolders" runat="server" AutoPostBack="true"
OnSelectedIndexChanged="ddlFolders_SelectedIndexChanged">
</asp:DropDownList>
</asp:TableCell>
<asp:TableCell ColumnSpan="2">
<asp:GridView ID="gvReportList" runat="server" AutoGenerateColumns="false"
CellPadding="5" OnRowDataBound="gvReportList_RowDataBound" Width="98%">
<Columns>
<asp:HyperLinkField HeaderText="Name" DataTextField="Name" Target="_blank" />
<asp:BoundField HeaderText="Description" DataField="Description" />
</Columns>
</asp:GridView>
</asp:TableCell>
서버 사이드 C#을
// hyperlink binding by row for first column in gridview
protected void gvReportList_RowDataBound(object sender, GridViewRowEventArgs e)
{
//Changes text in the first column into HyperLinks
HyperLinkField nameLink = gvReportList.Columns[0] as HyperLinkField;
string linkPath = "http://inserted-address-here";
if (e.Row.RowType == DataControlRowType.DataRow)
{
//applies a unique suffix to the address depending on the link name
HyperLink nameHl = (HyperLink)e.Row.Cells[0].Controls[0];
string nameText = nameHl.Text;
string linkSuffix = nameText.Replace(" ", "+");
nameLink.NavigateUrl = linkPath + linkSuffix;
}
}
나는 단지 그것을 내가있는 gridview에 하이퍼 링크를 결합하고있어 순서 함께 할 수있는 뭔가가 가정 할 수 있습니다. 또는 거기에 데이터가 있어도 첫 번째 행이 null 값으로 나타날 때와 관련이 있습니다.
nameLink는 현재 열의 특정 열이 아닌 전체 열을 나타낼 수 있습니까? 즉, nameLink.NavigateUrl이 nameHl.NavigateUrl이되어서는 안됩니까? – n8wrl
변경된 것이 트릭이었습니다. 나는 그것이 그렇게 간단했기 때문에 기쁘다! 정말 고마워. – silentdrkangel
도와 드리겠습니다. 또한 공백을 + 오른쪽으로 대체하여 줄 바꿈을 억제하려고하는 것처럼 보입니까? NoWrap을 사용하여 열의 스타일을 지정하는 것이 좋습니다. – n8wrl