【问题标题】:Get Input Data from GridView从 GridView 获取输入数据
【发布时间】: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。然后用户输入数据并单击他们输入数据所在行的相应“提交”按钮(提交按钮与数据位于同一行)。那时,我尝试访问数据。这能回答你的问题吗?

标签: c# asp.net


【解决方案1】:

听起来您的数据在回发时丢失了。这可能比解决方案更像是一种解决方法,但是除了服务器端处理程序之外,您还可以将客户端单击处理程序添加到您的按钮,并在其中将您想要的值存储在隐藏字段中。当您点击服务器端点击处理程序时,您应该会发现隐藏字段中保留的值。

我确信一定有更好的方法来做到这一点,但我过去曾在 GridView 上使用过类似的解决方法。

【讨论】:

【解决方案2】:

经过数小时的挫折后,我意识到我一直在进行回发数据绑定。

ASP.NET GridView does not update its row

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多