我正在尝试为我的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>
感谢您的帮助!我希望这是解决任务的足够信息。
您可以将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:PostBackTrigger ControlID="Filter_Berechtigung_DB" EventName="OnSelectedIndexChanged" />
</Triggers>
</asp:UpdatePanel>