2012-10-16 34 views
1

我正在構建一個簡單的C#web應用程序,它將充當聯機數據庫的資源。GridViewRow FindControl查詢C#

在我的表中,我有一個類別和作者列。

當我單擊表格中的類別值時,表格將刷新,只顯示選定的類別。

要做到這一點,我用下面的代碼:

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> 
+1

要找出您的問題的原因,我們需要你的GridView綁定代碼。你能發佈你的代碼嗎? – jams

+0

我已經attatched gridview綁定代碼 –

回答

0

Page_Load使用if (!IsPostBack)似乎已經解決了這個問題:)

0

當你點擊一個類別這改變了控制下。控制號碼改變。你引用這個數字並且它是錯誤的,它需要是常量並且是表「main」的一個ID。您必須找到一種方法將相應的號碼正確分配給selectedCategory。你可以通過向category-label添加一個屬性來做到這一點,或者檢查點擊了什麼。像金融=> selectedCategory = 2,健康= 3,家庭= 4等希望它有幫助。

+0

你好。你的發言的第一部分是有道理的。但我不確定我是否按照您的意思向category-label添加了一個屬性。你能澄清嗎?謝謝 –