我有一個表單,爲用戶更新數據庫中的某些數據。我把這個拉入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的類似問題,但他們都沒有解決/解決這個特定問題。
在頁面生命週期什麼時候你想訪問數據? – bingo
@bingo調用DB來填充CompanyName和guID。然後用戶輸入數據,然後單擊他們輸入數據的行的「提交」按鈕(提交按鈕與數據位於同一行)。那時,我嘗試訪問數據。這是否回答你的問題? – sparkyShorts