2015-05-04 5 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

изменения, что тег на жереха : LinkButton. Это не собирается поднимать событие serveride. – garryp

+0

попробуйте установить 'selectedindex =" 0 "' и посмотреть, помогает ли это, а также разместить точку останова внутри вашей функции, чтобы увидеть, если она ударяется вообще – Pseudonym

+0

нет ее вообще не ударяли @pseudonym –

ответ

1

<a onclick="..."> строго разметка HTML, а onclick ищет функцию javascript под названием GridView1_SelectedIndexChanged, а не метод на стороне сервера. Измените это:

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

Теперь он выполняет функцию, но я нажимаю на вторую строку gridView, и она выдает исключение из null-указателя, путем отладки. Я нахожу, что выбранное значение Row равно null –

-1

Если вы не хотите использовать LinkButton, в качестве альтернативы, вы можете сделать следующим образом-

<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

Но тогда я получаю эту ошибку: имя не существует в текущем context и yourlinkId показывает ошибку в коде позади –

+0

Вы не можете получить доступ к contro l непосредственно, так как он находится внутри

+0

Нет. Я получил ошибку в этой строке: - yourlinkId.ServerClick + = new EventHandler (GridView1_SelectedIndexChanged); –

Смежные вопросы