GridViewRow FindControl查询C#

GridViewRow FindControl查询C#,c#,.net,gridview,gridviewrow,C#,.net,Gridview,Gridviewrow,我正在构建一个简单的C#web应用程序,它将充当资源的在线数据库 在我的表中,我有一个category和author列 单击表中的类别值时,该表将刷新,仅显示选定的类别 为此,我使用了以下代码: GridViewRow clickedRow = ((LinkButton)sender).NamingContainer as GridViewRow; Label category = (Label)clickedRow.FindControl("lbl_category"); String s

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

在我的表中,我有一个category和author列

单击表中的类别值时,该表将刷新,仅显示选定的类别

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

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>


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

如果
页面加载中的(!IsPostBack)
似乎解决了问题:)

要找出问题的原因,我们需要您的GridView绑定代码。你能发布你的代码吗?我已经在那里附上了gridview绑定代码。你陈述的第一部分是有意义的。但我不确定我是否理解您的意思,即在类别标签中添加属性。你能澄清一下吗?谢谢