我正在构建一个简单的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>
答案 0 :(得分:0)
单击某个类别时,会更改下面的控件。控制编号改变。您引用该数字并且它是错误的,它需要是常量并且表“主”的ID。您必须找到一种方法将相应的数字正确分配给selectedCategory。您可以通过向类别标签添加属性来执行此操作,或检查已单击的内容。像Finance =&gt; selectedCategory = 2,健康= 3,家庭= 4等希望它有所帮助。
答案 1 :(得分:0)
在if (!IsPostBack)
中使用Page_Load
似乎解决了问题:)