Я бы хотел, чтобы мой сеточный вид был отфильтрован по выпадающему списку, который у меня есть.Он извлекает конкретную информацию из базы данных, поэтому, когда вы выбираете значение из выпадающего списка, он должен искать во всех записях и находить только записи со значением ddl в них.
Код, который я используюв коде для SelectedIndexChanged это не правильно, хотя.Я получаю сообщение об ошибке, говорящее 'Value' is not a member of 'Integer'.
Это на линии dsCompanyFilter.SelectParameters.Add
Возможно, это как-то связано с тем, что gridview не привязывается к выпадающему списку должным образом, но я не уверен, как исправить этот код,Пожалуйста, помогите!
<asp:Content ID="Content2" ContentPlaceHolderID="body" Runat="Server"><br /><br /><br />
<asp:linkbutton id="btnAll" runat="server" text="ALL" onclick="btnAll_Click" />
<asp:repeater id="rptLetters" runat="server" datasourceid="dsLetters">
<headertemplate>
|
</headertemplate>
<itemtemplate>
<asp:linkbutton id="btnLetter" runat="server" onclick="btnLetter_Click"
text='<%#Eval("Letter")%>' />
</itemtemplate>
<separatortemplate>
|
</separatortemplate>
</asp:repeater>
<asp:sqldatasource id="dsLetters" runat="server" connectionstring="<%$
ConnectionStrings:ProductsConnectionString %>"
selectcommand="SELECT DISTINCT LEFT(ProductName, 1) AS [Letter] FROM [Product]">
</asp:sqldatasource>
Filter By Company:<asp:DropDownList ID="ddlCompany" runat="server"
DataSourceID="dsCompanyFilter" DataTextField="CompanyName" DataValueField="CompanyID">
</asp:DropDownList>
<asp:gridview id="gvProducts" runat="server" AutoGenerateColumns="False"
datakeynames="ProductID" datasourceid="dsProductLookup"
style="margin-top: 12px;">
<Columns>
<asp:BoundField DataField="ProductName" HeaderText="ProductName"
SortExpression="ProductName" />
</Columns>
</asp:gridview>
<asp:sqldatasource id="dsProductLookup" runat="server" connectionstring="<%$
ConnectionStrings:ProductsConnectionString %>"
Selectcommand="SELECT ProductID, ProductName FROM [Product] ORDER BY [ProductName]">
</asp:sqldatasource>
<asp:SqlDataSource ID="dsCompanyFilter" runat="server"
ConnectionString="<%$ ConnectionStrings:ProductsConnectionString %>"
SelectCommand="SELECT [CompanyName], [CompanyID] FROM [Company]">
</asp:SqlDataSource>
</asp:Content>
Этот код фильтрует результаты в сетке по буквам и выпадающим спискам.Проблема заключается в том, что выпадающий список фильтрует вид сетки.
Protected Sub btnLetter_Click(ByVal sender As Object, ByVal e As EventArgs)
Dim btnLetter As LinkButton = TryCast(sender, LinkButton)
If btnLetter Is Nothing Then
Return
End If
dsProductLookup.SelectCommand = [String].Format("SELECT ProductID, ProductName
FROM [Product]
WHERE ([ProductName] LIKE '{0}%')
ORDER BY [ProductName]", btnLetter.Text)
End Sub
Эта часть имеет проблему.Теперь я получаю ошибку, должен объявить скалярную переменную @ CompanyID
Protected Sub ddlCompany_SelectedIndexChanged(ByVal sender As Object, ByVal e As
System.EventArgs) Handles ddlCompany.SelectedIndexChanged
dsProductLookup.SelectCommand = "SELECT ProductName, CompanyID, CompanyName
FROM Product, Company
WHERE CompanyID = @CompanyID
ORDER BY ProductName"
dsProductLookup.SelectParameters.Add("@CompanyID", DbType.Int32,
ddlCompany.SelectedValue)
End Sub