由于数据表的分页,Foreach无法从gridview中获取所有值

时间:2019-03-05 19:45:03

标签: c# asp.net gridview foreach datatable

所以我有一个遍历GridView的函数,该函数使用带有分页功能的JQuery DataTable。它为每个页面显示十行,因此有必要编辑所需的所有文本框,然后单击名为“保存”的按钮,该按钮调用前面提到的功能。问题在于,只有单击“保存”按钮时屏幕上显示的页面才发送文本框值,而不是所有的gridview texbox。例如,如果我编辑“ gridview页面1”,“ gridview页面2”和“ gridview页面3”字段,并在显示“ gridview页面3”的同时单击“保存”按钮,则“ gridview页面1”和“ gridview页面” 2“文本框值不会保存。如果我在错误地解释自己,请告诉我。

ASPX内联代码

<asp:GridView ID="grvServicio" runat="server" AutoGenerateColumns="false" class="display" >
    <Columns>
        <asp:BoundField DataField="intIdServicio" HeaderText="ID" />
        <asp:BoundField DataField="vchServicio" HeaderText="Servicio" />           
        <asp:TemplateField HeaderText="Cantidad">      
            <ItemTemplate>                 
                <asp:TextBox ID="txtCantidad" runat="server" ClientIDMode="Static" Text='<%# Bind("intCantidad")%>'></asp:TextBox>              
            </ItemTemplate>         
        </asp:TemplateField>
        <asp:TemplateField HeaderText="Precio">      
            <ItemTemplate>                 
                <asp:TextBox ID="txtPrecio" runat="server" ClientIDMode="Static" Text='<%# Bind("decPrecio")%>'></asp:TextBox>              
            </ItemTemplate>         
        </asp:TemplateField>
        <asp:TemplateField HeaderText="Estatus">
            <ItemTemplate>  
                <asp:CheckBox ID="chkServEstatus" Checked='<%# Convert.ToBoolean(Eval("intEstatus"))%>' enabled="true" runat="server" CssClass="ChkBoxClass"/>                  
            </ItemTemplate> 
        </asp:TemplateField> 
    </Columns>
</asp:GridView>

ASPX背后的代码(我已经删除了代码保存过程,但如有必要,请告知我)

protected void btnGuardarServicio_Click(object sender, EventArgs e)
{
    foreach (GridViewRow row in grvServicio.Rows)
        {
            for (int i = 0; i < grvServicio.Columns.Count; i++)
            {                   
                string idEvento = row.Cells[0].Text;
                TextBox cant = (TextBox)row.Cells[2].FindControl("txtCantidad");
                TextBox prec = (TextBox)row.Cells[3].FindControl("txtPrecio");
                prec.Text = prec.Text.Replace(",", ".");

            }
        }
}

Here is how my GridView looks like using datatable JQuery plug-in

1 个答案:

答案 0 :(得分:0)

使用分页网格时,仅当您更改页面时才呈现和加载数据(如果是服务器端分页)。也许您可以在值更改事件中保存数据,所以当您切换到下一页并再次返回时,您的数据已更新。