Как отфильтровать привязанный к базе данных gridview с помощью выпадающего списка?
У меня есть asp.net веб-страница. В нем у меня есть gridview, использующий источник данных linq to sql.
Gridview привязан к таблице данных в sql. Мне нужно добавить несколько выпадающих списков для фильтрации представления gridview. Я добавляю один выпадающий список и заполняю его. Как мне получить ddlComment для фильтрации GridViewUG? Datakey для GridViewUG-это ref_id, но мне нужен выпадающий список, чтобы показать комментарий и разрешить выбор комментария.
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { //GridViewUG.DataBind(); SqlConnection Conn3 = new SqlConnection(MyGlobals.ConnString); SqlDataAdapter da3 = new SqlDataAdapter("select distinct comment from cap.manual_adjustments", Conn3); DataSet ds3 = new DataSet(); da3.Fill(ds3); if (ddlComment != null) { ddlComment.DataSource = ds3; ddlComment.DataTextField = "Comment"; ddlComment.DataValueField = "Comment"; //ddlUnderwritingSection.DataBind(); ddlComment.Items.Insert(0, new ListItem("Select")); ddlComment.DataBind(); } } }
<asp:GridView ID="GridViewMA" runat="server" AllowSorting="True" AutoGenerateColumns="False" DataSourceID="dsManualAdjustments" Height="100%" Width="100%" ShowFooter="True" DataKeyNames="Ref_Id" OnSelectedIndexChanged="SelectedIndexChanged" OnRowEditing="OnRowEditing" OnRowCancelingEdit="OnRowCanceling" DataBindingComplete="DataBindingComp" EnableDelete="true"> <AlternatingRowStyle BackColor="#cccccc" /> <%-- <HeaderStyle CssClass="GVFixedHeader" /> <FooterStyle CssClass="GVFixedFooter" />--%> <Columns> <asp:CommandField ShowEditButton="True" ButtonType="Link" EditText="<img src='Images/edit2.png' border=0 title='Edit the Row'>" UpdateText="<img src='Images/update2.png' border=0 title='Update the Row'>" CancelText="<img src='Images/cancel2.png' border=0 title='Cancel your changes'>"> </asp:CommandField> <asp:TemplateField ShowHeader="false"> <ItemTemplate> <asp:imagebutton ID="LinkButton2" runat="server" CommandName="Delete" imageurl="~/Images/delete2.png" OnClientClick="return confirm('Delete this entry?');" ToolTip='Delete the Row'></asp:imagebutton> </ItemTemplate> <ItemStyle Width="25px" /> </asp:TemplateField> <asp:TemplateField ShowHeader="false"> <ItemTemplate> <asp:imagebutton ID="LinkButton3" runat="server" CommandName="Copy" imageurl="~/Images/copy2.png" OnClick="CopyRow" ToolTip='Copy the Row' ></asp:imagebutton> </ItemTemplate> <ItemStyle Width="25px" /> </asp:TemplateField> <asp:TemplateField HeaderText="Action" ItemStyle-Width="25px"> <ItemTemplate> </ItemTemplate> <FooterStyle HorizontalAlign="Left" /> <FooterTemplate> <asp:Button ID="ButtonAdd" runat="server" Text="Add" OnClick="FirstGridViewRow" /> <asp:Button ID="ButtonUpload" runat="server" Text="Upload" OnClick="btnUpload_Click" /> </FooterTemplate> <ItemStyle HorizontalAlign="Left" Width="25px" /> </asp:TemplateField> <asp:BoundField DataField="Import_Date" HeaderText="Import_Date" ReadOnly="True" SortExpression="Import_Date" />
.
.
.
<asp:TemplateField HeaderText="LC_Balance" ItemStyle-Width="100px" SortExpression="LC_Balance"> <ItemTemplate> <asp:label ID="LCBalance" runat="server" Text='<%# Eval("LC_Balance") %>' width="100px"></asp:label> </ItemTemplate> <EditItemTemplate> <asp:textbox ID="LCBalance" runat="server" Text='<%# Bind("LC_Balance")%>' Visible="true" ReadOnly="false" Width="150px" MaxLength="15"></asp:textbox> </EditItemTemplate> <FooterStyle HorizontalAlign="Right" BackColor="Blue"/> <FooterTemplate> <asp:Textbox ID="LCBalance" runat="server" Text='<%# Eval("LC_Balance") %>' width="100px" MaxLength="15"/> </FooterTemplate> <ItemStyle HorizontalAlign="Left" Width="100px" /> </asp:TemplateField> <%-- <asp:BoundField DataField="User_Id" HeaderText="User_Id" ReadOnly="True" SortExpression="User_Id" /> <asp:BoundField DataField="Modified" HeaderText="Modified" ReadOnly="True" SortExpression="Modified" /> <asp:BoundField DataField="Import_Date" HeaderText="Import_Date" ReadOnly="True" SortExpression="Import_Date" />--%> </Columns> </asp:GridView> </div> <asp:LinqDataSource ID="dsManualAdjustments" runat="server" ContextTypeName="CAPScheduler.ManualAdjustmentsDataContext" EntityTypeName="" TableName="Manual_Adjustments" Select="new (Comment, Entity_Number, Ref_Id)" Where="Comment == @Comment" > <WhereParameters> <asp:ControlParameter ControlID="ddlComment" Name="Comment" PropertyName="SelectedValue" Type="String" /> </WhereParameters> </asp:LinqDataSource>
Что я уже пробовал:
Я попытался создать выпадающий список с помощью linq и прикрепить 2 в режиме дизайна, но мне нужна отдельная строка для каждой группы комментариев. Он возвращает несколько строк для одного и того же комментария, потому что он действительно связывает выпадающий список с gridview в фоновом режиме с помощью ref_id