【问题标题】:GridViewRow FindControl query C#GridViewRow FindControl 查询 C#
【发布时间】:2012-10-16 17:17:21
【问题描述】:

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

【问题讨论】:

  • 要找出问题的原因,我们需要您的 GridView 绑定代码。你能发布你的代码吗?
  • 我已附上gridview绑定代码

标签: c# .net gridview gridviewrow


【解决方案1】:

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

【讨论】:

  • 您好。你陈述的第一部分是有道理的。但是我不确定通过向类别标签添加属性来遵循您的意思。你能澄清一下吗?谢谢
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2021-07-02
    • 1970-01-01
    • 2010-11-30
    • 1970-01-01
    • 2018-07-07
    • 2018-07-23
    • 2022-08-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多