2015-03-24 4 views
1

Я создаю страницу поиска, где, если нажать кнопку «Просмотр/Редактировать ссылку», другая страница загружается с дополнительной информацией по этому вопросу; когда кнопка нажата, она не бросает событие RowCommand Gridview. Gridview построен динамически на основе поисковых запросов и сравнивается с базой данных через SQLDataSource. Вот html для Gridview.Gridview linkbutton не срабатывает RowCommand

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="RID" DataSourceID="Report_System" CellPadding="4" ForeColor="#333333" GridLines="None" OnDataBound="GridView1_DataBound" Width="739px" OnRowCommand="GridView1_RowCommand"> 
     <AlternatingRowStyle BackColor="White" /> 
     <Columns> 
      <asp:BoundField DataField="RID" HeaderText="Report ID" InsertVisible="False" ReadOnly="True" SortExpression="RID" /> 
      <asp:BoundField DataField="Rdate" HeaderText="Report Date" SortExpression="Rdate" /> 
      <asp:BoundField DataField="Rtype" HeaderText="Type" SortExpression="Rtype" /> 
      <asp:BoundField DataField="OID" HeaderText="Officer ID" SortExpression="OID" /> 
      <asp:BoundField DataField="Ofirstname" HeaderText="Officer" SortExpression="Ofirstname" /> 
      <asp:BoundField DataField="Pname" HeaderText="Student Reportee" SortExpression="Pname" /> 
      <asp:ButtonField CommandName="View/Edit" Text="View/Edit" /> 
     </Columns> 
     <EditRowStyle BackColor="#7C6F57" /> 
     <FooterStyle BackColor="#1C5E55" Font-Bold="True" ForeColor="White" /> 
     <HeaderStyle BackColor="#1C5E55" Font-Bold="True" ForeColor="White" /> 
     <PagerStyle BackColor="#666666" ForeColor="White" HorizontalAlign="Center" /> 
     <RowStyle BackColor="#E3EAEB" /> 
     <SelectedRowStyle BackColor="#C5BBAF" Font-Bold="True" ForeColor="#333333" /> 
     <SortedAscendingCellStyle BackColor="#F8FAFA" /> 
     <SortedAscendingHeaderStyle BackColor="#246B61" /> 
     <SortedDescendingCellStyle BackColor="#D4DFE1" /> 
     <SortedDescendingHeaderStyle BackColor="#15524A" /> 
    </asp:GridView> 

В настоящее событие RowCommand должен просто отправлять обратно на этикетке для целей тестирования.

protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e) 
    { 
     //get row index 
     int row = Convert.ToInt32(e.CommandArgument); 

     errorLabel.Text = row.ToString(); 
    } 

Я убедился, что ViewState включен, OnRowCommand находится в правильном месте, и мой PageLoad событие пусто. Я не могу найти никаких сообщений в форуме, чтобы помочь мне выйти за рамки этого. Есть идеи?

+0

Я боролся с этим вопросом много раз, но это было слишком долго для меня, чтобы помнить все вещи, которые я попробовал и почему различные варианты не работают. Тем не менее, я могу рассказать вам, что я делаю сейчас, что работает для меня: Добавить событие OnRowEditing вместо OnRowCommand. Редактировать: Ох, и сделайте CommandName «Редактировать» вместо «Просмотр/Правка». – TheRotag

+0

Попробуйте преобразовать в TemplateField. – Kami

+0

Изменение события не сработало, поэтому я попытался проверить его с каждым событием, и единственным событием, которое уволили, было событие PreRender, которое было очевидно. Ничего не стреляло, когда я нажал кнопку, которая говорит мне, что что-то еще не так. Я еще не полностью пробовал идею TemplateField, но странно, что ни одно событие не срабатывало вообще. –

ответ

0

Попробуйте добавить проверку на CommandName внутри GridView1_RowCommand с if заявления, как этот

protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e) 
    { 
     if(e.CommandName == "View/Edit") 
     { 
     //get row index 
     int row = Convert.ToInt32(e.CommandArgument); 

     errorLabel.Text = row.ToString(); 
     } 
    } 
Смежные вопросы