2015-05-04 117 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); –