【问题标题】:Firing GridView SelectedIndexChanged from code behind从后面的代码中触发 GridView SelectedIndexChanged
【发布时间】:2015-04-24 14:20:45
【问题描述】:

我有一个带有 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 
}

【问题讨论】:

  • 而不是触发事件调用方法。您可以从事件处理程序以及您想要的任何位置调用此方法。

标签: c# asp.net gridview


【解决方案1】:

如果您使用的是 .net 4.5,则可以在 GridView 上调用 SelectRow 方法:

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

【讨论】:

  • 很高兴知道最新框架中的新功能!这对我有用。我现在将代码重构为一个单独的方法来手动执行它。但是,我可以使用这个解决方案,因为它很优雅。谢谢
猜你喜欢
  • 2012-10-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-25
  • 1970-01-01
  • 2023-03-15
相关资源
最近更新 更多