我正在开发一个项目,在第一页上是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>
现在我有一个名为subcategory.aspx的页面,它有一个子类别名称的标签,然后是相应的图像,反之亦然,从表子类别检索。这是我的子类别代码.aspx
protected void Page_Load(object sender, EventArgs e)
{
labelsubcatname.Text = HttpUtility.UrlDecode(Request.QueryString["catid"]);
}
问题是,当我有catid时,我得到的值为1,2,依此类推,但是当我从表子类别中检索到 subcatname 时如下:
它不显示来自子类别表的 subcatname 。如何获取子类别的值而不是catid?
我还希望根据我在网格视图中显示的子类别名称显示图像。我现在正在获取所有图像这是我的网格视图代码
<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>
答案 0 :(得分:0)
您在subategory.aspx的页面加载中有Subcatid。然后使用Subcatid从数据库中检索行值。
答案 1 :(得分:0)
您可以在DataSource中使用内部联接查询,以便从子类别表中获取子名称,如下所示:
<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>
然后在您的超链接字段中使用subcatname:
<Columns>
<asp:HyperLinkField DataNavigateUrlFields="subcatname" DataNavigateUrlFormatString="~/subcategory.aspx?subcatname={0}"
DataTextField="categoryname" />
</Columns>
然后你可以从查询字符串中获取它:
labelsubcatname.Text = Request.QueryString["subcatname"] != null
? Request.QueryString["subcatname"].ToString()
: "N/A";
答案 2 :(得分:0)
好的,听着
DataNavigateUrlFormatString="~/subcategory.aspx?catid={0}"
表示您从数据库传递元素0,即
将其更改为1,即
DataNavigateUrlFormatString="~/subcategory.aspx?catid={1}"
你不需要
HttpUtility.UrlDecode(Request.QueryString["subcatname"]);'
只需用
替换它的Request.QueryString [&#34; subcatname&#34]。的ToString();