GridViewRow FindControl查询C#

时间:2012-10-16 17:17:21

标签: c# .net gridview gridviewrow

我正在构建一个简单的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");

这是我第一次点击类别/作者时工作正常。但是在表刷新后,选择另一个类别或作者,表格会显示错误的记录。

我该如何解决这个问题?

您可以查看页面here:点击'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>

2 个答案:

答案 0 :(得分:0)

单击某个类别时,会更改下面的控件。控制编号改变。您引用该数字并且它是错误的,它需要是常量并且表“主”的ID。您必须找到一种方法将相应的数字正确分配给selectedCategory。您可以通过向类别标签添加属性来执行此操作,或检查已单击的内容。像Finance =&gt; selectedCategory = 2,健康= 3,家庭= 4等希望它有所帮助。

答案 1 :(得分:0)

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