2015-07-04 46 views
0

我有一個網格視圖來填充數據從數據庫與最後一列元素超鏈接到不同的頁面或只是一個文本顯示(沒有超鏈接)。我在GridView的GridView1_SelectedIndexChanged()事件中將TransactionId存儲在cookie中的每條記錄。但是這個事件沒有被觸發。GridViews GridView1_SelectedIndexChanged不工作

GridView綁定正確,基於類型的最後一列項在GridView1_RowDataBound()處變成超鏈接。重定向到不同的頁面可以正常工作,但由於SelectedIndexChanged()事件未觸發,因此不會加載cookie,並且重定向的頁面不會顯示數據。

請幫我一把。謝謝。

代碼:

<asp:GridView ID="GridView1" runat="server" CellPadding="4" ForeColor="Black" 
GridLines="Vertical" Width="100%" RowStyle-Wrap="true" AllowPaging="True" 
PageSize="5" OnPageIndexChanging="gridView_PageIndexChanging" 

OnRowDataBound="GridView1_RowDataBound" onselectedindexchanged="GridView1_SelectedIndexChanged" 

AutoGenerateColumns="False" selectedindex="1" style="word-wrap:break-word; margin-left: 0px;" > 
    <Columns> 
     <asp:BoundField DataField="COL-1" HeaderText="COL1" /> 
     <asp:BoundField DataField="COL-2" HeaderText="COL2" /> 
     <asp:BoundField DataField="COL-3" HeaderText="COL3" /> 
     <asp:BoundField DataField="COL-4" HeaderText="COL4" /> 
    </Columns> 

    <AlternatingRowStyle BackColor="White" /> 
    <FooterStyle BackColor="#CCCC99" /> 
    <HeaderStyle BackColor="#6B696B" Font-Bold="True" ForeColor="White" /> 
</asp:GridView> 


protected void GridView1_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    HttpCookie TransId = new HttpCookie("TransId"); 
    GridViewRow row = GridView1.SelectedRow; 
    TransId.Value = row.Cells[0].Text; 
    Response.Cookies.Add(TransId); 
} 

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    if (e.Row.RowType == DataControlRowType.DataRow) 
    { 
     if (e.Row.Cells[3].Text.Equals("Pending")) 
     { 
      HyperLink link = new HyperLink(); 
      link.Text = "Pending"; 
      link.NavigateUrl = "NewPage.aspx"; 
      e.Row.Cells[3].Controls.Add(link); 
     } 
    } 
} 

回答

0

要調用重定向到另一個頁面,當您單擊單元格,所以當前頁面不在產生回發。這意味着您的SelectedIndexChanged函數未被命中,因爲ASP.NET正在加載新頁面。

嘗試導致回發到同一頁面,然後在自己調用Response.Redirect之前獲取Page_Load函數中的選定行。

+0

能否請您在重定向之前分享一些示例以回傳。我無法如何進一步進行。謝謝。 – Vasanth

+0

據我所知,GridView不能有AutoPostBack,所以我使用Boundfields。 如果我誤解了你的評論,請糾正我。 – Vasanth

+0

設置AutoGenerateSelectButton =「true」會觸發SelectedIndexChanged()事件,但會添加不是所需輸出的附加列。 我不能動態地將COL-4 BoundField類型動態地轉換爲CommandField。任何建議都會有所幫助。謝謝。 – Vasanth

0

刪除GridView1_SelectedIndexChanged()事件並傳遞TransId作爲參數。

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    if (e.Row.RowType == DataControlRowType.DataRow) 
    { 
     if (e.Row.Cells[3].Text.Equals("Pending")) 
     { 
      HyperLink link = new HyperLink(); 
      link.Text = "Pending"; 
      link.NavigateUrl = "NewPage.aspx?parameter=" + e.Row.Cells[0].Text; 
      e.Row.Cells[3].Controls.Add(link); 
     } 
    } 
}