C# 在两个页面之间传递url的查询字符串时出错

C# 在两个页面之间传递url的查询字符串时出错,c#,asp.net,sql-server,C#,Asp.net,Sql Server,我正在从事一个项目,在该项目的第一个页面上是default.aspx页面,我有一个网格视图,它与表category的列categoryname绑定。下面是代码default.aspx: <form id="form1" runat="server"> <div> <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="catid"

我正在从事一个项目,在该项目的第一个页面上是default.aspx页面,我有一个网格视图,它与表category的列categoryname绑定。下面是代码default.aspx:

 <form id="form1" runat="server">
<div>
    <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="catid"
        DataSourceID="SqlDataSource1">
        <Columns>
            <asp:HyperLinkField DataNavigateUrlFields="catid" DataNavigateUrlFormatString="~/subcategory.aspx?catid={0}"
                DataTextField="categoryname" />
        </Columns>
    </asp:GridView>
</div>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ToursandTravelsConnectionString %>"
    SelectCommand="SELECT [catid], [categoryname] FROM [category]"></asp:SqlDataSource>
</form>
DataNavigateUrlFormatString="~/subcategory.aspx?catid={0}"
问题是,当我使用catid时,我得到的值为1,2,依此类推,但当我使用从表子类别检索的subcatname时,如下所示:

DataNavigateUrlFormatString="~/subcategory.aspx?catid={0}"

DataNavigateUrlFormatString="~/subcategory.aspx?catid={0}"
它不显示子类别表中的子类别名称。如何获取子类别而不是catid的值

DataNavigateUrlFormatString="~/subcategory.aspx?catid={0}"
我还想根据我在网格视图中显示的子类别名称显示图像。我现在正在获取所有图像这是我的网格视图代码

<form id="form1" runat="server">
<div>
<table>
<tr>
<td>
    <asp:Label ID="labelsubcatname" runat="server"></asp:Label>
    <br />
    <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
        DataSourceID="SqlDataSource1">
        <Columns>
            <asp:TemplateField HeaderText="pic" SortExpression="pic">
                <EditItemTemplate>
                    <asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("pic") %>'></asp:TextBox>
                </EditItemTemplate>
                <ItemTemplate>
                    <asp:Image ID="Image1" runat="server" Height="200px" 
                        ImageUrl='<%# Eval("pic") %>' Width="250px" />
                </ItemTemplate>
            </asp:TemplateField>
        </Columns>
    </asp:GridView>
    <asp:Label ID="labelviewdetail" runat="server" Text="View Detail"></asp:Label>
    <br />
</td>

</table>
</div>
</form>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
    ConnectionString="<%$ ConnectionStrings:ToursandTravelsConnectionString %>" 
    SelectCommand="SELECT [pic] FROM [subcategory]"></asp:SqlDataSource>
DataNavigateUrlFormatString="~/subcategory.aspx?catid={0}"




在subcategory.aspx的页面加载中有您的Subcatid。然后使用Subcatid从数据库中检索行值

您可以在数据源中对查询使用内部联接,以便从子类别表中获取子类别名称,如下所示:

<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ToursandTravelsConnectionString %>"
SelectCommand="SELECT C.[catid], C.[categoryname], S.[subcatname] FROM [category] C INNER JOIN subcategory S ON C.[catid] = S.[catid]"></asp:SqlDataSource>
DataNavigateUrlFormatString="~/subcategory.aspx?catid={0}"
好的,听着

DataNavigateUrlFormatString="~/subcategory.aspx?catid={0}"
表示您正在从数据库传递元素0,即

DataNavigateUrlFormatString="~/subcategory.aspx?catid={0}"
将其更改为1,即

DataNavigateUrlFormatString="~/subcategory.aspx?catid={0}"
DataNavigateUrlFormatString="~/subcategory.aspx?catid={1}"    
你不需要

DataNavigateUrlFormatString="~/subcategory.aspx?catid={0}"
HttpUtility.UrlDecode(Request.QueryString[“subcatname”]);'

DataNavigateUrlFormatString="~/subcategory.aspx?catid={0}"
换成

DataNavigateUrlFormatString="~/subcategory.aspx?catid={0}"

Request.QueryString[“subcatname”].ToString()

如果在查询字符串中传递CategoryID,则必须在第二页上运行查询。您能告诉我在第二页上需要运行什么查询吗@SeanLange使用select语句从类别表中获取categoryname,其中包含传入值的where子句。是否应为:“从catid=1的子类别中选择子类别名称”@seanlange该查询是否返回所需的值?然后我会说是的。我使用subcatid而不是catid,如下所示:“labelsubcatname.Text=HttpUtility.UrlDecode(Request.QueryString[“subcatname”]);”但是我没有得到任何输出,标签是空白的,请检查上面的解决方案。我发帖感谢你的it解决方案。请再帮我一个问题。我已经编辑了我的帖子。请帮助。谢谢:)@ricky007没问题。就像我的帖子一样,你还有什么问题吗?我已经编辑了我的帖子,请过目:)@ricky007我能问你一个愚蠢的问题吗?我应该在subcategory.aspx.cs文件中应用内部联接吗@jomsk1eYou可以将查询更新到SqlDataSource1,请参阅我的更新。请参阅我的编辑。当你调试时,请求的价值是什么?QueryString[“subcatname”]?谢谢你,兄弟,它成功了。我的帖子中还编辑了一个问题,请帮助我,谢谢:)@jomsk1eI很高兴它有帮助!对于新问题,我认为这与这个线程无关,因为这个线程的内容是关于在另一个页面上传递查询字符串。这将使本帖的未来读者感到困惑。您应该为该新问题启动一个新问题,以便不同的用户可以查看和帮助您。请尝试此DataNavigateUrlFields=“subcatname”
DataNavigateUrlFormatString="~/subcategory.aspx?catid={0}"