2015-11-12 110 views
0

我有一個表單,爲用戶更新數據庫中的某些數據。我把這個拉入GridView。我有一個複選框和一個文本框,用於輸入從數據庫返回的字段。我無法弄清楚如何訪問用戶輸入的數據;它會以空字符串的形式返回(或者在複選框的情況下爲false)。這裏是我的前端代碼:從GridView獲取輸入數據

<asp:GridView ID="missingCounties" runat="server" Width="300px" BorderColor="Black" BorderStyle="Solid" BorderWidth="1px" AutoGenerateColumns="False" OnRowCommand="newCountyInformation" DataKeyNames= "guID"> 
     <Columns> 
     <asp:BoundField DataField="guID" HeaderText="guID" Visible="False"></asp:BoundField> 
     <asp:BoundField DataField="CompanyName" HeaderText="CompanyName"></asp:BoundField> 
     <asp:TemplateField> 
      <HeaderTemplate>Is %</HeaderTemplate> 
       <ItemTemplate> 
        <asp:CheckBox ID="percent" runat="server"/> 
       </ItemTemplate> 
     </asp:TemplateField> 

     <asp:TemplateField> 
      <HeaderTemplate>Fee</HeaderTemplate> 
       <ItemTemplate> 
        <asp:TextBox ID="fee" runat="server"/> 
       </ItemTemplate> 
     </asp:TemplateField> 

     <asp:TemplateField> 
      <HeaderTemplate>Submit</HeaderTemplate> 
       <ItemTemplate> 
        <asp:LinkButton runat="server" CommandName="SubmitNewCounty" Width="100px" Text="Submit" CommandArgument="<%#((GridViewRow)Container).RowIndex %>"/> 
       </ItemTemplate> 
     </asp:TemplateField> 
    </Columns> 
     <EmptyDataTemplate> 
      <asp:Label ID="Label2" runat="server" Text="No new counties found."></asp:Label> 
     </EmptyDataTemplate> 
    </asp:GridView> 

這裏是我試過在後端:

protected void newCountyInformation(object sender, GridViewCommandEventArgs e) 
{ 
    var index = Convert.ToInt32(e.CommandArgument); 
    var guID = missingCounties.DataKeys[index]["guID"].ToString(); 
    if (string.Equals(e.CommandName.ToLower(), "submitnewcounty")) 
    { 
     var percent = (CheckBox)missingCounties.Rows[index].Cells[2].FindControl("percent"); 
     var fee = (TextBox)missingCounties.Rows[index].Cells[3].FindControl("fee"); 

    } 
} 

在後臺,我已經嘗試不同的東西,如:missingCounties.Rows[index].Cells[2].Text。我在哪裏弄錯用戶輸入數據?

作爲一個免責聲明,我查看了許多關於SO的類似問題,但他們都沒有解決/解決這個特定問題。

+2

在頁面生命週期什麼時候你想訪問數據? – bingo

+0

@bingo調用DB來填充CompanyName和guID。然後用戶輸入數據,然後單擊他們輸入數據的行的「提交」按鈕(提交按鈕與數據位於同一行)。那時,我嘗試訪問數據。這是否回答你的問題? – sparkyShorts

回答

1

聽起來就像您的數據在回發中丟失。這可能更多的是解決方案,而不是解決方案,但除了服務器端處理程序之外,您還可以將一個客戶端單擊處理程序添加到您的按鈕,並在其中將所需的值存儲在隱藏字段中。當您點擊服務器端點擊處理程序時,您應該可以在隱藏字段中找到這些值。

我確定必須有更好的方法來做到這一點,但我過去一直使用類似的方法來處理GridView。

+0

這看起來是在這個答案中的一些建議的解決方案的線。 http://stackoverflow.com/questions/17589268/dynamically-created-controls-losing-data-after-postback。讓我試試看。 – sparkyShorts