2013-04-10 22 views
5

Đây là mã của tôi ở đằng sau trong C#.Cách chuyển mã sau biến qua hyperlinkfield

protected void Page_Load(object sender, EventArgs e) 
    { 
      Name = "Nitin";      
    } 

Tôi có một GridView trong đó có một Hyperlinkfield.I muốn gửi Name từ C trang # (một trong mã đằng sau) để trang tiếp theo qua HyperLinkField nhưng nó không phải là một trong những BoundField của GridView (tức Mà tôi nhận được từ EntityDataSource). Đây là mã asp.net của tôi.

đang:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="Id" DataSourceID="WorkItemsEntityDataSource"> 
    <Columns> 
     <asp:hyperlinkfield datatextfield="Id"      
       datanavigateurlfields="Id" 
       datanavigateurlformatstring="~\WorkItems.aspx?Id={0}"   
       headertext="Id"/> 
     <asp:BoundField DataField="Description" HeaderText="Description" SortExpression="Description" /> 
     <asp:BoundField DataField="TFSId" HeaderText="TFSId" SortExpression="TFSId" /> 
     <asp:CheckBoxField DataField="IsBillable" HeaderText="IsBillable" SortExpression="IsBillable" /> 
    </Columns> 
</asp:GridView> 
+0

đăng mã chế độ xem lưới của bạn và giải quyết vấn đề ur rõ ràng .. –

Trả lời

2

Bạn có thể vượt qua URL chuyển hướng từ mã đằng sau cũng như thế này

Trong ASPX trang

   <asp:TemplateField> 
        <ItemTemplate> 
         <asp:HyperLink ID="hyp" runat="server" Text="Navigation"></asp:HyperLink> 
        </ItemTemplate> 
       </asp:TemplateField>  

Trong Mã đằng sau dữ liệu xem lưới tài ràng buộc sự kiện như thế này

protected void grddata_RowDataBound(object sender, GridViewRowEventArgs e) 
    {  
     if (e.Row.RowType == DataControlRowType.DataRow) 
     { 
      int ID = Convert.Int32(DataBinder.Eval(e.Row.DataItem, "ID")); 
      HyperLink hyp = (HyperLink)e.Row.FindControl("hyp"); 
      hyp.NavigateUrl = "Test.aspx?Name='" + Request.QueryString["test"] + "'&&ID"+ ID +""; 
     } 
    } 

tôi nghĩ điều này sẽ giúp bạn ...

+0

Cảm ơn Buddy.It hoạt động như một sự quyến rũ. –

+0

:) chào mừng bạn !!!! – Rajpurohit

+0

Xin chào Rajpurohit, tôi tự hỏi làm thế nào để gửi Id từ trường ràng buộc của GridView với Tên cũng thông qua HyperLinkField. –

0

Tôi không chắc chắn về việc sử dụng nó trong một điều khiển dữ liệu-bound trên thực tế, nhưng url bạn đang xây dựng chắc chắn không chứa tham số QueryString 'Tên'. Nó sẽ giống như thế này:

~\WorkItems.aspx?Id={0}&Name={1} 

chỉ thay thế Id với Tên nếu Id là không cần thiết:

~\WorkItems.aspx?Name={0} 

như sử dụng quyền thay - Tôi không biết những gì thuộc tính làm dữ liệu đối tượng của bạn có và cách liên kết với họ. Tôi nghĩ rằng bạn không có vấn đề với nó kể từ khi ràng buộc để Id hoạt động (có thể).

CẬP NHẬT

Nếu Tên không được trở về từ nguồn dữ liệu, bạn nên thể tạo đối tượng mới, trong đó có lĩnh vực Tên là tốt, hoặc sử dụng một số tên liên tục, giống như bạn đang tuyên bố trong một trang (không chắc chắn nó này cùng một tên sẽ được hiển thị trong mỗi hàng). Lựa chọn thứ hai có thể được thực hiện như thế này:

~\WorkItems.aspx?Id={0}&Name=<%= Name %> 
+0

Thực ra Tên không phải là cái tôi nhận được từ EntityDataSource đó là mã đằng sau biến. Do đó, bạn biết cách gửi câu trả lời đó. . –

+0

Đã đăng cập nhật về nhúng máy chủ biến thành trang ASP –

0

Bạn có thể sử dụng:

<asp:TemplateField HeaderText="test"> 
    <ItemTemplate> 
      <asp:HyperLink runat="server" ID="temp" NavigateUrl='<%# String.Format("~\WorkItems.aspx?Id={0}&Name={1}", Eval("Name"), Name)%>' ></asp:HyperLink> 
     </ItemTemplate> 
</asp:TemplateField> 
0

Bạn có thể sửa đổi một url HyperLinkField 's bằng cách làm này:

protected void pendingAccountsGrid_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    if (e.Row.RowType == DataControlRowType.DataRow) 
    { 
     ((HyperLink) e.Row.Cell[0].Controls[0]).NavigateUrl = "http://stackoverflow.com"; 
    } 
} 

Chỉ cần thay đổi nó để xác định các chỉ số chính xác trong e.Row.Cell[0].

Các vấn đề liên quan