나는 dropdown과 gridview를 가지고있다. 드롭 다운에서 선택한 값에 따라 Gridview의 첫 번째 열에 지정된 하이퍼 링크에 대해 NaviagetURL을 업데이트하려고합니다. 그래서 하이퍼 링크의 navigateurl을 동적으로 업데이트하기 위해 onRowDataBound 함수를 사용하고 있습니다. 그리고 첫 번째 열 "ID"의 값을 검색하여 OnRowDataBound 함수 내에서 쿼리 문자열로 사용하려고하지만이 작업을 수행 할 수 없습니다.OnRowDataBound 함수에서 특정 열의 값을 가져 오는 방법은 무엇입니까?
첫 번째 열의 하이퍼 링크를 클릭하면 쿼리 문자열에 변수 ID에 할당 된 값이 없습니다. 따라서 URL은 단지 http://localhost/JobCosting/EditSavedTicket.aspx?ID=
으로 변환됩니다. 하이퍼 링크를 클릭 할 때 열리는 URL은 쿼리 문자열의 변수 ID에 지정된 첫 번째 열에 지정된 값을 가져야합니다. e.Row.Cells [1] .Text 또는 e.Row.Cells [2] .Text를 사용하면 열 값이 올바르게 검색되지만 열 0에서 검색되지 않는 값이 필요합니다.
<asp:GridView ID="GridView2" runat="server" AllowSorting="True"
AutoGenerateColumns="False" DataSourceID="Saved_Work" OnRowDataBound="update_url"
Style="float: left; font-size: small; position: relative;
width: 82%; position: relative; top: -10px; height: 40px; font-size: small; text-align: left;
left: 30px;" align="left">
<Columns>
<asp:TemplateField HeaderText="ID">
<ItemTemplate>
<asp:HyperLink ID="Continue_SavedWork" runat="server" NavigateUrl='<%# Eval("ID", "~/EditSavedJob.aspx?ID={0}") %>'
Text='<%# Eval("ID") %>'></asp:HyperLink>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="UserID" HeaderText="User" SortExpression="UserID" />
<asp:BoundField DataField="Date_Created" HeaderText="Last_Updated_On" SortExpression="Date_Created" />
</Columns>
</asp:GridView>
코드 뒤에 : 나는 e.Row.Cells [0]는 .text 인 문자열 ID의 길이를 확인하면 제로
의 GridView입니다
protected void update_url(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
//string NavigateUrl="<%# Eval('ID', 'EditSavedTicket.aspx?ID={0}) %>";
string id = e.Row.Cells[0].Text;
HyperLink hp = (HyperLink)e.Row.FindControl("Continue_SavedWork");
if (SavedWorkDD.SelectedValue.ToString() == "Tickets")
hp.NavigateUrl = string.Format("EditSavedTicket.aspx?ID={0}", id);
}
}
작동하지 않는 기능은 무엇입니까? 무슨 일이야? –
안녕하세요 @MarkMiller, 나는 게시물을 업데이 트했습니다. –
왜 OnRowDataBound 이벤트 처리기가 필요합니까? URL은 이벤트 핸들러를 제거하면 데이터 바인딩에 의해 예상대로 설정됩니다. – Markus