2015-05-04 58 views
2
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
    Width="245px" onselectedindexchanged="GridView1_SelectedIndexChanged" > 
    <Columns> 
     <asp:TemplateField> 
      <ItemStyle BackColor="#CCCCCC" ForeColor="Black" Width="250px" HorizontalAlign="Center" BorderStyle="None" /> 
      <ItemTemplate> 
       <a href="" onclick="GridView1_SelectedIndexChanged"> <asp:Label ID="Label5" runat="server" Text='<%# Bind("users") %>'></asp:Label></a> 
      </ItemTemplate> 
     </asp:TemplateField> 
    </Columns>   
</asp:GridView> 

我不想使用自動生成的選擇鏈接或任何按鈕,我只是希望標籤(或鏈接)本身觸發selectedIndexChanged事件。onclick事件不會調用函數嗎?

的C#代碼: -

protected void GridView1_SelectedIndexChanged(object sender, EventArgs e) { 
    show_chats(); 
} 

但事件方法不會被調用。請建議做什麼

+0

更改代碼,一個標籤一個asp :LinkBut​​ton的。這不會引發服務器事件。 – garryp

+0

嘗試設置'selectedindex =「0」'並查看是否有幫助,並在你的函數中放置一個斷點,以查看它是否被擊中 – Pseudonym

+0

否其未被擊中@pseudonymonym –

回答

1

<a onclick="...">是嚴格的HTML標記,而onclick正在尋找名爲GridView1_SelectedIndexChanged的javascript函數,而不是服務器端方法。更改爲:

<asp:LinkButton runat="server" OnClick="GridView1_SelectedIndexChanged"> 
+0

我正在使用這個: - 但仍然無法正常工作 –

+0

好吧,現在它擊中的功能,但我點擊GridView的第二行,它會拋出空指針異常,通過調試我發現selectedRow值爲空 –

-1

如果你不想使用的LinkBut​​ton,或者,你可以做如下 -

<a href="" id="yourlinkId" runat="server"><asp:Label ID="Label5" runat="server" Text='<%# Bind("users") %>'></a> 

背後

protected void Page_Load(object sender, EventArgs e) 
    { 
     yourlinkId.ServerClick += new EventHandler(GridView1_SelectedIndexChanged); 
    } 

    protected void GridView1_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     show_chats(); 
    } 
+0

但是,然後,我得到這個錯誤:名稱不存在當前上下文和yourlinkId在後面的代碼中顯示錯誤 –

+0

您無法訪問控制l直接,因爲它在裏面

+0

不,我在這一行中有錯誤: - yourlinkId.ServerClick + = new EventHandler(GridView1_SelectedIndexChanged); –

相關問題