ASP. Net C# Выберите строку в GridView без обновления всей страницы. - PullRequest
0 голосов
/ 28 февраля 2020

Я пытаюсь создать фильтр для моего GridView. Фильтр работает нормально, но если я затем выберу столбец отфильтрованного GridView, вся страница обновится ...

Здесь мой FilterCode:

protected void Filter_Berechtigung_DB_SelectedIndexChanged(object sender, EventArgs e)
{
    List<User> ll_UserList = new List<User>();

    foreach (var User in ReadZugriff())
    {
        if (User.Berechtigung.Contains(Filter_Berechtigung_DB.SelectedItem.Value))
        {
            ll_UserList.Add(User);
        }
    }
    // Läd die gefilterten Infos in das Datagrid
    LoadData(ll_UserList);
}

Здесь мои LoadData:

private void LoadData(List<User> ll_UserList)
{
    UserTable.DataSource = ll_UserList;
    UserTable.DataBind();
}

Я вызываю метод LoadData один раз в начале загрузки страницы

Здесь мой SelectedIndexChanged:

protected void UserTable_SelectedIndexChanged(object sender, EventArgs e)
{
    var lv_Index = UserTable.SelectedIndex;

    UserTable.Rows[lv_Index].Style[HtmlTextWriterStyle.BackgroundColor] = "lightgray";
}

Здесь мой GridView и используемые кнопки:

<div style="float: left">
    <ul>
        <li style="float: left; margin-right: 5px">Berechtigung:
        </li>
        <li style="float: left">
            <asp:DropDownList Style="height: 25px; width: 100px; font-size: 12px; margin-top: -2px" ID="Filter_Berechtigung_DB" runat="server" AutoPostBack="True" OnSelectedIndexChanged="Filter_Berechtigung_DB_SelectedIndexChanged">
                <asp:ListItem Text="" />
            </asp:DropDownList>
        </li>
    </ul>
</div>
<asp:GridView ID="UserTable" runat="server" AutoGenerateColumns="False" Width="100%" CssClass="table table-striped table-bordered" OnSelectedIndexChanged="UserTable_SelectedIndexChanged" CellPadding="4" CellSpacing="2" ForeColor="Black">
    <Columns>
        <asp:BoundField HeaderText="" DataField="">
            <ItemStyle Font-Names="Arial" ForeColor="Black" />
        </asp:BoundField>
        <asp:CommandField ShowSelectButton="True" />
    </Columns>
    <HeaderStyle BackColor="lightgray" ForeColor="Black" />
    <RowStyle CssClass="TableItemHover" BackColor="White"></RowStyle>
    <SelectedRowStyle BackColor="gray" Font-Bold="True" ForeColor="Black" />
</asp:GridView>

Спасибо за помощь! Я надеюсь, что этой информации достаточно для решения задачи.

1 Ответ

0 голосов
/ 28 февраля 2020

Вы можете поместить свои GridView и FilterDropDownList в UpdatePanel , чтобы предотвратить обратную передачу всей страницы:

<asp:UpdatePanel ID="myUpdatePanel" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="false">
    <ContentTemplate>
        <div style="float: left">
            <ul>
                <li style="float: left; margin-right: 5px">Berechtigung:
                </li>
                <li style="float: left">
                    <asp:DropDownList Style="height: 25px; width: 100px; font-size: 12px; margin-top: -2px" ID="Filter_Berechtigung_DB" runat="server" AutoPostBack="True" OnSelectedIndexChanged="Filter_Berechtigung_DB_SelectedIndexChanged">
                        <asp:ListItem Text="" />
                    </asp:DropDownList>
                </li>
            </ul>
        </div>
        <asp:GridView ID="UserTable" runat="server" AutoGenerateColumns="False" Width="100%" CssClass="table table-striped table-bordered" OnSelectedIndexChanged="UserTable_SelectedIndexChanged" CellPadding="4" CellSpacing="2" ForeColor="Black">
            <Columns>
                <asp:BoundField HeaderText="" DataField="">
                    <ItemStyle Font-Names="Arial" ForeColor="Black" />
                </asp:BoundField>
                <asp:CommandField ShowSelectButton="True" />
            </Columns>
            <HeaderStyle BackColor="lightgray" ForeColor="Black" />
            <RowStyle CssClass="TableItemHover" BackColor="White"></RowStyle>
            <SelectedRowStyle BackColor="gray" Font-Bold="True" ForeColor="Black" />
        </asp:GridView>
     </ContentTemplate>
     <Triggers>
        <asp:AsyncPostBackTrigger ControlID="Filter_Berechtigung_DB" EventName="SelectedIndexChanged" />
        <asp:AsyncPostBackTrigger ControlID="UserTable" EventName="SelectedIndexChanged" />
     </Triggers>
</asp:UpdatePanel>
...