【发布时间】:2015-11-12 16:20:18
【问题描述】:
我有一个表单可以拉回一些数据供用户在数据库中更新。我将其拉入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 调用 DB 以填充 CompanyName 和 guiID。然后用户输入数据并单击他们输入数据所在行的相应“提交”按钮(提交按钮与数据位于同一行)。那时,我尝试访问数据。这能回答你的问题吗?