1

我正在构建一个简单的 C# Web 应用程序,它将充当资源的在线数据库。

在我的表中,我有一个类别和作者列。

当我单击表格中的类别值时,表格将刷新,仅显示选定的类别。

为此,我使用了以下代码:

GridViewRow clickedRow = ((LinkButton)sender).NamingContainer as GridViewRow;

Label category = (Label)clickedRow.FindControl("lbl_category");

String selectedCategory = category.Text.ToString();

string query = 
("SELECT * FROM main WHERE category='" + selectedCategory + "' ORDER BY ID ASC");

这适用于我第一次单击类别/作者。但是在表格刷新后,选择另一个类别或作者,表格就会显示错误的记录。

我该如何解决这个问题?

您可以在此处查看该页面:尝试单击类别'Health',然后单击'Puvent, Kevin'。结果与预期的不同。我认为

一旦你看到页面,这个问题可能会更有意义:)

编辑 - 这是 gridview 绑定代码:

<asp:TemplateField HeaderText="Category" ItemStyle-Width="15%">
<ItemTemplate>
<asp:Label ID="lbl_category" Text='<%# Bind("category")%>' runat="server" style="display:none;"></asp:Label>
<asp:LinkButton ID="lbl_linkCategory" Text='<%# Bind("category")%>' runat="server" OnClick="linkCategory" CommandArgument='<%# Bind("category")%>' />
</ItemTemplate>
</asp:TemplateField>
4

2 回答 2

0

当您单击一个类别时,这会更改下面的控件。控制编号发生变化。您引用了该数字,但它是错误的,它必须是常量并且是“主”表的 ID。您将必须找到一种方法将相应的编号正确分配给 selectedCategory。您可以通过向类别标签添加属性来做到这一点,或者检查已单击的内容。像 Finance => selectedCategory = 2,Health = 3,Family = 4 等。希望它有所帮助。

于 2012-10-16T17:47:19.067 回答
0

使用if (!IsPostBack)inPage_Load似乎解决了问题:)

于 2012-10-20T20:26:38.517 回答