2015-04-24 43 views
0

我有一個GridView與SelectedIndexChanged的實現。從後面的代碼燒GridView SelectedIndexChanged

<asp:GridView ID="gvCalloutTeam" runat="server" OnRowDataBound="gvCalloutTeam_RowDataBound" OnSelectedIndexChanged="gvCalloutTeam_SelectedIndexChanged" 
          AutoGenerateColumns="False" EnableViewState="False" BackColor="White" BorderColor="#cccccc" BorderWidth="1px" CellPadding="2" 
          EmptyDataText="No person found" GridLines="None" Width="100%"> 
          <AlternatingRowStyle BackColor="#ededed" /> 
          <Columns> 
           .......... List of columns.............. 
          </Columns> 
          <FooterStyle BackColor="#cccccc" ForeColor="Black" /> 
          <HeaderStyle BackColor="#6699cc" Font-Bold="True" ForeColor="White" BorderColor="#cccccc" BorderWidth="1px" /> 
          <PagerStyle BackColor="#999999" ForeColor="Black" HorizontalAlign="Center" /> 
          <RowStyle BackColor="#fefefe" ForeColor="Black" /> 
          <SelectedRowStyle BackColor="#008A8C" Font-Bold="True" ForeColor="White" /> 
          <SortedAscendingCellStyle BackColor="#F1F1F1" /> 
          <SortedAscendingHeaderStyle BackColor="#0000A9" /> 
          <SortedDescendingCellStyle BackColor="#CAC9C9" /> 
          <SortedDescendingHeaderStyle BackColor="#000065" /> 
         </asp:GridView> 

我有一個在頁面上的複選框和CheckedChanged事件實現。

<asp:CheckBox ID="cbTakeOutOrder" runat="server" Text="Take out of order" OnCheckedChanged="cbTakeOutOrder_CheckedChanged" AutoPostBack="true" /> 

我想從這個事件中設置GridView的SelectedIndex。

protected void cbTakeOutOrder_CheckedChanged(object sender, EventArgs e) 
    { 
     if (!cbTakeOutOrder.Checked && gvCalloutTeam.Rows.Count > 0) 
      gvCalloutTeam.SelectedIndex = 0; 
    } 

但它不觸發GridView的SelectedIndexChanged事件。如果我在UI上選擇該行,它會觸發,但是如果我在代碼中更改索引,它不會觸發該事件。在代碼後面更改SelectedIndex後,是否有方法來調用該事件?

protected void gvCalloutTeam_SelectedIndexChanged(object sender, EventArgs e) 
     { 
//////////////////my logic 
} 
+1

射擊相反的事件調用的方法。你可以從事件處理程序和任何你想要的地方調用這個方法。 –

回答

2

如果你在.NET 4.5,你可以在GridView控件調用SelectRow方法:

protected void cbTakeOutOrder_CheckedChanged(object sender, EventArgs e) 
{ 
    if (!cbTakeOutOrder.Checked && gvCalloutTeam.Rows.Count > 0) 
     gvCalloutTeam.SelectRow(0); 
} 
+0

很高興知道最新框架中的新功能!這對我有效。我將代碼重構爲一個單獨的方法,以便現在手動執行此操作。但是,我可以使用這個解決方案,因爲它很優雅。謝謝 – techspider

相關問題