我一直在調試我的代碼了一會兒,看着在其他論壇上的帖子,但它似乎是每個人都有比我一個不同的問題,什麼工作他們不會爲工作我。必須聲明標量變量,vb.net
我的下拉列表中應該通過選擇關聯到某一個產品的所有公司來過濾一個gridview。我在網上找到的解決方案是,大多數人沒有在其gridview中設置DataKeyNames。
我有這一套,但不CompanyID。這沒有任何意義。所以我不知道我應該做什麼,因爲這是我發現的唯一答案。
<asp:DropDownList ID="ddlCompany" runat="server" DataSourceID="dsCompanyFilter"
DataTextField="CompanyName" DataValueField="CompanyID" AppendDataBoundItems="true"
AutoPostBack="true">
Protected Sub ddlCompany_SelectedIndexChanged(ByVal sender As Object, ByVal e As
System.EventArgs) Handles ddlCompany.SelectedIndexChanged
Dim CompanyID As Integer = ddlCompany.SelectedValue
dsProductLookup.SelectCommand = "SELECT ProductName, CompanyID, CompanyName
FROM Product, Company
WHERE CompanyID = @CompanyID
ORDER BY ProductName"
dsProductLookup.SelectParameters.Add("@CompanyID", ddlCompany.SelectedValue)
End Sub
<asp:gridview id="gvProducts" runat="server" AutoGenerateColumns="false"
datakeynames="ProductID" datasourceid="dsProductLookup" style="margin-top: 12px;">
<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] ORDER BY CompanyName">
</asp:SqlDataSource>
更新:我嘗試添加這在我的網站其他頁面,並具有相同的宣言錯誤。 Must declare the scalar variable "@CompanyID".
Choose Company: <asp:DropDownList ID="ddlCompany" runat="server" DataSourceID="dsCompanyFilter" DataTextField="CompanyName" DataValueField="CompanyID" AppendDataBoundItems="true" AutoPostBack="true">
<asp:ListItem Enabled="true" Text="Select an option"></asp:ListItem>
</asp:DropDownList>
<asp:gridview id="gvCategories" runat="server" AutoGenerateColumns="False"
datakeynames="CategoryID,CompanyID" datasourceid="dsCategoryLookup" emptydatatext="No
categories/products found." style="margin-top: 12px;">
<Columns>
<asp:BoundField HeaderText="Category Name" DataField="CategoryName" />
<asp:HyperLinkField DataNavigateUrlFields="ProductID"
DataNavigateUrlFormatString="Product/Default.aspx?ID={0}"
DataTextField="ProductName"
HeaderText="Product Name" />
</Columns>
</asp:gridview>
<asp:SqlDataSource ID="dsCategoryLookup" runat="server"
ConnectionString="<%$ ConnectionStrings:ProductsConnectionString %>"
SelectCommand="SELECT DISTINCT c.CategoryName, c.CategoryID, p.ProductName,
p.ProductID, cl.CompanyID, cl.ProductID, co.CompanyID
FROM Category AS c
INNER JOIN CategoryLink AS l ON l.CategoryID = c.CategoryID
INNER JOIN Product AS p ON p.ProductID = l.ProductID
LEFT JOIN CompanyLink AS cl ON cl.ProductID = p.ProductID">
</asp:SqlDataSource>
<asp:SqlDataSource ID="dsCompanyFilter" runat="server"
ConnectionString="<%$ ConnectionStrings:ProductsConnectionString %>"
SelectCommand="SELECT [CompanyName], [CompanyID]
FROM [Company]
ORDER BY CompanyName">
</asp:SqlDataSource>
Protected Sub ddlCompany_SelectedIndexChanged(ByVal sender As Object, ByVal e As
System.EventArgs) Handles ddlCompany.SelectedIndexChanged
dsCategoryLookup.SelectCommand = "SELECT Category.CategoryName,
CategoryLink.ProductID, Company.CompanyName,
Company.CompanyID, CompanyLink.CompanyID AS Expr1,
Product.ProductName, Product.ProductID,
CompanyLink.ProductID AS Expr2
FROM Company
LEFT JOIN CompanyLink
ON Company.CompanyID = CompanyLink.CompanyID
LEFT JOIN Product
ON CompanyLink.ProductID = Product.ProductID
LEFT JOIN CategoryLink
ON CategoryLink.ProductID = Product.ProductID
LEFT JOIN Category
ON CategoryLink.CategoryID = Category.CategoryID
WHERE Company.CompanyID = @CompanyID
ORDER BY Product.ProductName"
我想補充說的dsCompanyFilter數據源,我得到了一個錯誤說'輸入字符串的不正確的format.' – jlg
我加入了我的另一頁上一個下拉列表並再次出現Scalar問題,但是這次我將CompanyID添加爲數據鍵並在Select語句中包含了CompanyID。我嘗試使用SelectParameters代碼,但它給出了與上面相同的錯誤。輸入字符串....我不想開始一個新線程,因爲它或多或少都是相同的錯誤。你能幫我嗎? – jlg
這兩者之間有什麼不同,以及您收到的錯誤是什麼? –